Сколько параметров на самом деле принимает ios :: setstate? - PullRequest
2 голосов
/ 22 февраля 2012

Каждое определение функции ios::setstate( iostate state ), которое я видел, показывает, что функция принимает параметры ONE и ONLY ONE , пока я компилирую программу с помощью следующего вызова функции, все компилируетсяи работает нормально:

mystream.setstate( std::ios_base::badbit, true );

Что именно является вторым параметром и почему нет документации по нему?

РЕДАКТИРОВАТЬ: я использую компилятор командной строки последней версииMicrosoft Visual Studio 2010.

1 Ответ

1 голос
/ 22 февраля 2012

Требуется принять один аргумент, как вы заметили, но реализации позволяют расширять функции-члены с помощью параметров со значениями по умолчанию (§17.6.5.5).Другими словами, пока это работает:

mystream.setstate( std::ios_base::badbit );

ваш компилятор соответствует.Ничто не говорит о том, что ваш код не должен работать, хотя.

(Ваша библиотечная реализация решила, что логический параметр будет полезен.значение по умолчанию, но вы все равно можете попасть на территорию, специфичную для реализации, и сами представить аргумент. Является ли это хорошей идеей, это, очевидно, другой вопрос, но, вероятно, нет.)

...