Nik*_*lai 4 c++ string stringstream copy-initialization
以下代码在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
}
Run Code Online (Sandbox Code Playgroud)
我认为直接初始化的唯一情况是复制初始化不起作用的时候构造函数是显式的,在这种情况下不是这样.这是怎么回事?
该构造被标示为露骨,所以只能用直接初始化中使用.§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);
Run Code Online (Sandbox Code Playgroud)
(同样是真正的basic_stringbuf,basic_istringstream和basic_ostringstream).
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |