根据文档,移动赋值运算符应该使源字符串流处于无效状态:
移动字符串流。操作后源流变为无效状态。
(来自:http://en.cppreference.com/w/cpp/io/basic_stringstream/operator%3D)
鉴于此,我希望以下内容输出0
,而是输出1
,使用GCC 6.3.1。
#include <iostream>
#include <sstream>
int main()
{
std::stringstream source;
std::stringstream target;
target = std::move(source);
std::cout << bool(source);
return 0;
}
我认为文档应该读取状态是未定义的而不是无效的,这在流的上下文中似乎有点过于强烈。任何人都可以确认吗?