指针和{l,r}值引用的通用名称?

时间:2012-08-26 05:24:15

标签: c++ types c++11 standards

指针和{l,r}值引用是否属于同一组类型装饰,表示应如何访问类型?如果是这样,这个组的名字是什么?例如,{const, volatile, restrict}都是类型限定符。我正在寻找一个这样的名称,可以应用于各种指针和引用(有希望在标准中提到的那个)。

感谢您的见解!

3 个答案:

答案 0 :(得分:3)

根据C ++语法,当它们出现在 ptr-declarator 中时,它们都被称为 ptr-operator ,如[dcl.decl] / 4中所定义/ p>

ptr-operator:
    * attribute-specifier-seqopt cv-qualifier-seqopt
    & attribute-specifier-seqopt
    && attribute-specifier-seqopt
    nested-name-specifier * attribute-specifier-seqopt cv-qualifier-seqopt

但这只是语法中的正式名称,就你如何使用指针和引用而言,它们并不相似,我认为将它们组合在一起并没有多大价值。指针是对象,可以复制,通过值传递,重新分配等。而引用不能做任何这些事情,它们是完全不同的语言结构。试图将它们分组为“表示应该如何访问类型”的东西是恕我直言。

答案 1 :(得分:1)

AFAIK C ++标准没有命名包含指针和引用的“类型装饰器”组,但您可以将它们称为类型构建器

其他语言中对应的内置类型构建器使用不同的语法。

现代C ++中的模板机制与C ++ 11 using相结合,可以让您定义自定义类型构建器,可以说理想情况下我们现在应切换到那个而不是“失败的实验” “C语法......

如,

template< class Pointee >
using Ptr = Pointee*;

template< class Referent >
using Ref = Referent&;

int main()
{
    Ptr<int> p = new int( 42 );
    Ref<int> r = *p;
}

但是,截至2012年8月,Visual C ++尚不支持此语法。

答案 2 :(得分:0)

采用类型并返回另一种类型的东西通常称为类型构造函数。例如,类型构造函数*采用类型T并返回另一种类型pointer to T