以下代码在GCC、Clang和Visual Studio中失败:
#include <string>
#include <sstream>
int main() {
std::string s = "hello"; // ok, copy-initialization
std::stringstream ss1(s); // ok, direct-initialization
std::stringstream ss2 = s; // error
}我认为,只有当构造函数是显式的时,才是直接初始化工作而复制初始化不起作用的情况,而在本例中并非如此。到底怎么回事?
发布于 2013-10-15 22:35:36
该构造函数标记为显式,因此只能用于直接初始化。第27.8.5节:
explicit basic_stringstream(
ios_base::openmode which = ios_base::out | ios_base::in);
explicit basic_stringstream(
const basic_string<charT,traits,Allocator>& str,
ios_base::openmode which = ios_base::out | ios_base::in);
basic_stringstream(const basic_stringstream& rhs) = delete;
basic_stringstream(basic_stringstream&& rhs);( basic_stringbuf、basic_istringstream和basic_ostringstream也是如此。)
https://stackoverflow.com/questions/19392209
复制相似问题