不同流状态的定义(C++)

Definition of different States of Streams (C++)

我知道 ios_base 有一个流状态声明,例如
ios_base::goodbit(错误状态)
ios_base::ate(文件打开模式状态)
还有更多。
我感兴趣的是 ios_base
这些成员函数的定义 它们是简单的 class 还是 class 模板?它们是如何实施的?父class(如果有的话)是哪一个?

它们不是"member functions",它们只是一些常量。

你可以在标准库headers中找到,goodbit是一个类型为iostate的常量,而ate是一个类型为[=14=的常量].

即libc++ 在 header "ios":

中定义了它们
typedef unsigned int iostate;
static const iostate goodbit = 0x0;
...
typedef unsigned int openmode;
static const openmode ate    = 0x02;

Are they a simple class or a class template?

它们实际上是 static constexpr 嵌套在 std::ios_base class (as from the reference documentation 中的声明):

How are they implemented? Which one is there parent class(if any)?

正如那里提到的,它是特定于编译器实现的。通常这些是不使用 parent class.

的简单值

从技术上讲,它们是 BitmaskType constexpr. Defined in ios_base 命名空间。

Bitmask typestandard 中定义(这是 c++14 工作草案)。

17.5.2.1.3 Bitmask types [bitmask.types]

[...] Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a bitset (20.5).

这意味着,即使有 bitset 编译器仍然可以自由实现它。

你问的成员的准确定义在27.5.3.1 Types [ios.types]中有定义,相关点基本都说是位掩码类型