以下代码在 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
}
我认为直接初始化有效而复制初始化无效的唯一情况是构造函数是显式的,在这种情况下不是。这是怎么回事?