C++ 11에서는 istream/ostream에 대한 void * 로의 암시 적 변환을 더 이상 지원하지 않으므로 while 루프에서 사용할 수 있도록 암시 적으로 bool로 변환 될 수 있습니다. 예를 들어, 등 :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 및 -std = C++ 11 플래그가있는 GNU g ++에서 두 버전 모두 완벽하게 컴파일됩니다. 표준에 의해 지원되는 istream에서 bool에 암묵적인 통로없이, 이것은 왜입니까? 표준을 가지고 VS가 빠르며 느슨한 것을 이해할 수 있지만 GNU 역시 그렇습니까? 어떤 통찰력에도 감사드립니다.