У меня есть код, который ведет себя по-разному на разных компиляторах:
std::string strVal = "11";
std::stringstream stream( strVal );
auto value = false;
if( !( stream >> std::noboolalpha >> value ) )
{
// report error - this path is taken on both compilers
}
// "value" is "false" here on in VS 2017, but "true" on GCC 4.6
Ожидается ли разница в поведении или это ошибка в GCC?
В соответствии с cppprefence :
Если извлечение не удалось (например, если была введена буква, где ожидается цифра), значение остается неизменным и устанавливается бит бит.
Однако value
изменяется на true
в GCC 4.6.