Сколько параметров фактически принимает ios :: setstate?
Вопрос
Каждое определение функции ios::setstate( iostate state )
, которое я видел, показывает, что функция принимает ОДИН и ТОЛЬКО ОДИН параметр, но когда я компилирую программу с помощью следующего вызова функции, все компилируетсяи работает нормально:
Что такое второй параметр и почему по нему нет документации?
РЕДАКТИРОВАТЬ: я использую компилятор командной строки последней версии Microsoft Visual Studio 2010.
Решение
Как вы заметили, требуется принимать один аргумент, но реализациям разрешено расширять функции-члены с помощью параметров со значениями по умолчанию (§17.6.5.5).Другими словами, пока это работает:
родовое слововаш компилятор соответствует требованиям.Однако ничто не говорит о том, что ваш код не должен работать.
(Реализация вашей библиотеки решила, что было бы полезно иметь логический параметр. Вы никогда не замечаете этого, потому что у него есть значение по умолчанию, но вы все равно можете попасть на территорию конкретной реализации и предоставить аргумент самостоятельно. Независимо от того,это хорошая идея, очевидно, другой вопрос, но, вероятно, нет.)