为什么这段代码不能编译?
#include <sstream>
void f(std::stringstream) { }
int main() {
f(std::stringstream{});
}
我收到此错误:
error: use of deleted function ‘std::basic_stringstream<char>::basic_stringstream(const std::basic_stringstream<char>&)’
f(std::stringstream{});
^
如果我更换std::stringstream
对于另一种不可复制的类型,它工作得很好。这个不应该用吗stringstream
的移动构造函数?
缺少移动构造函数stringstream
is 已知缺失的功能 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54316在 GCC 对 C++ 标准库的实现中。如果我正确地阅读了对该报告的评论,那么它是故意缺失的,因为它将依赖于其他更改,而这些其他更改会破坏 ABI,因此 GCC 人员选择仅破坏 ABI 一次(如果可能),但那个时刻还没有到来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)