That constructor is marked explicit, so can only be used with direct-initialization. §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);
(The same is true for basic_stringbuf
, basic_istringstream
, and basic_ostringstream
.)