Из того, что я прочитал, С++ 11 больше не поддерживает неявное преобразование в void* для istream/ostream, которое затем можно было бы неявно преобразовать в bool для использования в циклах while и т. д. Например:
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 обе версии прекрасно компилируются. Почему стандарт не поддерживает неявный путь к bool из istream? Я могу понять, как VS играет быстро и свободно со стандартом, но GNU тоже? Спасибо за любое понимание.