2

我看到的每个函数定义都ios::setstate( iostate state )表明该函数接受一个只有一个参数,但是当我使用以下函数调用编译程序时,一切都编译并运行得很好:

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

第二个参数到底是什么,为什么没有关于它的文档?

编辑:我正在使用最新版本的 Microsoft Visual Studio 2010 的命令行编译器。

4

1 回答 1

1

正如您所指出的,它需要接受单个参数,但允许实现通过具有默认值的参数扩展成员函数(第 17.6.5.5 节)换句话说,只要这有效:

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

您的编译器符合要求。但是,没有什么说您的代码不必工作。

(您的库实现已决定拥有一个布尔参数会很有用。您永远不会注意到它,因为它具有默认值,但您仍然可以进入特定于实现的领域并自己提供参数。无论这是否好想法显然是另一个问题,但可能不是。)

于 2012-02-22T00:39:46.617 回答