1

次のような割り当て

std::stringstream strstr;
strstr = std::stringstream(someString)

gccでコンパイルするとエラーが発生します:

error: use of deleted function ‘std::basic_stringstream<char>& std::basic_stringstream<char>::operator=(const std::basic_stringstream<char>&)’

std::stringstreamこれで、ストリームを明らかにコピーできず、のコピー コンストラクターが削除済みとしてマークされていることがわかりました。ただし、私の理解では、代入演算子の右側にr値があるため、前述はコピー代入ではなく移動代入である必要があります。

この場合、strstr.str(someString)代わりに使用するだけでおそらく解決できますが、このコンパイラエラーの原因にはまだ興味があります。ちなみにVC++では問題なくコンパイルできます。

4

1 に答える 1

1

これは、ABI の互換性のために遅れました。彼らは、メジャー バージョン番号の変更を待ちたいと考えていました。最近リリースされたバージョン 5.1 にあります: https://gcc.gnu.org/gcc-5/changes.html#libstdcxx

  • 移動可能でスワップ可能な iostream クラス。
于 2015-04-25T10:43:52.407 に答える