Std :: stringstream назначение перемещения не работает в gcc

Назначение, подобное следующему

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 ++.

1

Решение

Это было отложено по причинам совместимости ABI. Они хотели дождаться смены номера основной версии. Это есть в недавно выпущенной версии 5.1: https://gcc.gnu.org/gcc-5/changes.html#libstdcxx

  • подвижные и сменные классы iostream;
1

Другие решения


По вопросам рекламы [email protected]