次のコードは、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
}
直接初期化が機能し、コピー初期化が機能しない唯一のケースは、コンストラクターが明示的である場合であると考えましたが、この場合はそうではありません。どうしたの?