Vin*_*ent 8 c++ standards c++-standard-library c++11 reverse-iterator
这是什么的论述仅正是在C++标准意味着什么?这是否意味着标记的私人/受保护成员只需要按标准存在,或者它们只是实施的"建议",并不是必需的?
例子包括:
std::error_code::val_
std::wstring_convert::byte_err_string
std::array::elems
std::move_iterator::current
std::reverse_iterator::current
std::ostream_iterator::delim
// And a lot of others
Run Code Online (Sandbox Code Playgroud)
仅博览会成员用于简化行为规范。一旦引入了仅博览会成员并给出了名称,就可以根据该类指定类的语义,但是可以理解,所指定的只是该类的语义,该成员本身不属于该类其中。任何符合要求的实现都必须具有与引用该成员的规范中描述的方式相同的行为。
例如,假设我要指定一个暴露包装的指针包装器类。我可以说:“类Foo拥有对类型的对象的引用,该对象T被赋予其构造函数,并Foo::get公开该对象。” 这是非常冗长和不精确的。另外,我可以使用仅博览会成员指定此名称:
类
Foo包含对类型的对象的引用T。Run Code Online (Sandbox Code Playgroud)class Foo { const T* ptr; // exposition-only public: // Constructor // \ Foo(const T& t) : ptr(std::addressof(t)) {} // | // > real specification // Accessor // | const T& get() const { return *ptr; } // / };
当允许我引用某些特定的实现时,单个成员函数的规范将变得更加容易,但是可以理解的是,您可以按照自己喜欢的任何方式(例如,使用基类或私有嵌套类型)实现此功能,并且构件Foo::ptr是不规范的一部分。但是有了它,我可以用代码而不是文字来指定成员函数的语义。
n4296 17.5.2.3/2
某些类的对象有时需要其类的外部规范来存储数据,显然是在成员对象中.为了便于说明,一些子条款为符合类的外部规范的类的私有成员对象提供了代表性声明和语义要求.此类成员对象的声明和相关成员类型的定义后面跟注释,仅以展示结束,如:
Run Code Online (Sandbox Code Playgroud)streambuf* sb; // exposition only
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |