私が読んだところでは、C++ 11はistream/ostreamのためのvoid *への暗黙的変換をサポートしなくなりました。これは暗黙的にboolに変換され、whileループなど例えば:C++ 11 boolへのbasic_istream変換
string test;
while((getline(cin,test)))
{
cout << "received" << endl;
}
cout << "break";
標準は、今では
while(static_cast<bool>(getline(cin,test)))
は、新しい標準サポートされた方法になり、明示的なブール演算子を実装しています。しかし、Visual Studio 2017とGNU g ++と-std = C++ 11フラグでは、両方のバージョンが完全にコンパイルされます。標準によってサポートされているistreamからのブールへの暗黙の経路なしで、これはなぜですか?私はVSが標準で速く遊んでいることを理解することができますが、GNUもですか?どんな洞察もありがとう。