词汇表
参考文档使用特定于此库的几个术语。 此外,功能的简化实现有时在伪代码中提供,实际实现有时稍微难以理解。 本节定义在引用和用于描述一些函数的伪代码中使用的术语。
forwarded(x)
意味着对象被最佳地转发。 这意味着如果x是一个参数,它是std::forward
,如果它是一个捕获的变量,它从每当包围lambda
是一个右值时移动。
还要注意,当x可以移出时,语句return forwarded(x);
在带有decltype(auto)
的函数中,并不意味着将返回对x
的右值引用,这将创建一个悬挂引用。 相反,它意味着x
由值返回,值由std::forwarded x
构造。
perfect-capture
这在lambdas
中用于表示捕获的变量使用完美转发进行初始化,就好像使用了[x(forwarded(x))...](){}
。
tag-dispatched
这意味着记录的函数使用标签分派,因此确切的实现取决于与函数相关联的概念的模型。
implementation-defined
这表示实体(通常是类型)的确切实现不应被用户依赖。 特别是,这意味着,不能假设任何超出文档中明确书面的内容。 通常,由实现定义的实体满足的概念将被记录,因为否则可能对它不起作用。 具体来说,假设太多的实现定义的实体可能不会杀了你,但是当你更新到较新版本的Hana
时,它很可能会破坏你的代码。