【问题标题】:Std::stringstream move assignment not working in gccStd::stringstream 移动分配在 gcc 中不起作用
【发布时间】:2015-04-25 10:41:19
【问题描述】:

类似下面的作业

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++中编译没有问题。

【问题讨论】:

    标签: c++ move stringstream move-assignment-operator


    【解决方案1】:

    由于 ABI 兼容性的原因,这被延迟了。他们想等待主要版本号更改。它在最近发布的 5.1 版中:https://gcc.gnu.org/gcc-5/changes.html#libstdcxx

    • 可移动和可交换的 iostream 类;

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2010-12-08
      • 2018-12-03
      • 2013-03-13
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 2020-08-23
      • 2018-05-26
      相关资源
      最近更新 更多