Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我看到的每个函数定义都ios::setstate( iostate state )表明该函数接受一个且只有一个参数,但是当我使用以下函数调用编译程序时,一切都编译并运行得很好:
ios::setstate( iostate state )
mystream.setstate( std::ios_base::badbit, true );
第二个参数到底是什么,为什么没有关于它的文档?
编辑:我正在使用最新版本的 Microsoft Visual Studio 2010 的命令行编译器。
正如您所指出的,它需要接受单个参数,但允许实现通过具有默认值的参数扩展成员函数(第 17.6.5.5 节)。换句话说,只要这有效:
mystream.setstate( std::ios_base::badbit );
您的编译器符合要求。但是,没有什么说您的代码不必工作。
(您的库实现已决定拥有一个布尔参数会很有用。您永远不会注意到它,因为它具有默认值,但您仍然可以进入特定于实现的领域并自己提供参数。无论这是否好想法显然是另一个问题,但可能不是。)