Назначение, подобное следующему
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-значение.
Althogh в этом случае это, вероятно, можно решить, просто используя strstr.str(someString)
вместо этого я все еще был бы заинтересован в том, что вызывает эту ошибку компилятора. Он без проблем компилируется в VC ++.
Это было отложено по причинам совместимости ABI. Они хотели дождаться смены номера основной версии. Это есть в недавно выпущенной версии 5.1: https://gcc.gnu.org/gcc-5/changes.html#libstdcxx
- подвижные и сменные классы iostream;