当前位置:  开发笔记 > 编程语言 > 正文

博览会只在C++标准中?

如何解决《博览会只在C++标准中?》经验,为你挑选了3个好方法。

这是什么的论述仅正是在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

jalf.. 12

这意味着它们不是标准所要求的,但它们只是说明了类的内部结构可能是什么样的,以便了解标准委员会所考虑的实施方式.

它基本上是一种沟通意图的方式.



1> jalf..:

这意味着它们不是标准所要求的,但它们只是说明了类的内部结构可能是什么样的,以便了解标准委员会所考虑的实施方式.

它基本上是一种沟通意图的方式.



2> Kerrek SB..:

仅博览会成员用于简化行为规范。一旦引入了仅博览会成员并给出了名称,就可以根据该类指定类的语义,但是可以理解,所指定的只是该类的语义,该成员本身不属于该类其中。任何符合要求的实现都必须具有与引用该成员的规范中描述的方式相同的行为。

例如,假设我要指定一个暴露包装的指针包装器类。我可以说:“类Foo拥有对类型的对象的引用,该对象T被赋予其构造函数,并Foo::get公开该对象。” 这是非常冗长和不精确的。另外,我可以使用仅博览会成员指定此名称:

Foo包含对类型的对象的引用T

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规范的一部分。但是有了它,我可以用代码而不是文字来指定成员函数的语义。


我喜欢将它们视为该语言的“ C ++抽象机”的库。

3> ForEveR..:

n4296 17.5.2.3/2

某些类的对象有时需要其类的外部规范来存储数据,显然是在成员对象中.为了便于说明,一些子条款为符合类的外部规范的类的私有成员对象提供了代表性声明和语义要求.此类成员对象的声明和相关成员类型的定义后面跟注释,仅以展示结束,如:

streambuf* sb; // exposition only

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有