类内的模板化类的Typedef

static_rtti

我想知道为什么以下代码有效:

template <class T>
class A {
  public:
  typedef A* Pointer;
  typedef A<T>* OtherPointer;
};

int main()
{
  A<double> a;
  A<double>::Pointer b = &a;
  A<double>::OtherPointer c = &a;
  std::cout << b << " " << c << std::endl;
}

OtherPointer对我来说,语法看起来很合逻辑。我想知道的那个Pointer类的名称是否隐式包含在类定义中的模板化类型?如果是这样,为什么其他语法也能正常工作?

杰森

之所以起作用,是因为在类模板中A<T>,类型名称A是完整描述的type的别名A<T>您上面的模板定义等同于:

template <class T>
class A {
  public:
  typedef A<T>* Pointer;
  typedef A<T>* OtherPointer;
};

正如你所看到的,当你把它写这种方式,A<T>::Pointer并且A<T>::OtherPointertypedefS为同一类型(这只是A<T>本身)。因此,您的示例编译成功。

也许其他人可以引用此标准的相关部分。应该说,我知道这是一个领域,尤其是我过去在一些较早的编译器中看到的错误,在该领域中,该错误A不等同于A<T>模板定义内部。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类内部的模板化类的Typedef

来自分类Dev

Typedef 在模板化类中使用模板化嵌套类

来自分类Dev

模板类的typedef

来自分类Dev

typedef模板类实例

来自分类Dev

类模板内的类模板

来自分类Dev

模板化类中的typedef导致C ++错误

来自分类Dev

类模板中的Typedef指针

来自分类Dev

使用=作为类模板的类内初始化程序

来自分类Dev

如何在模板化类的“命名空间”中创建非模板化typedef?

来自分类Dev

在派生类中使用typedef /在模板化的基类中使用

来自分类Dev

类内的模板方法

来自分类Dev

转发声明模板类的typedef

来自分类Dev

如何引用模板类中定义的typedef

来自分类Dev

* .cpp文件中的Typedef模板类指针

来自分类Dev

模板typedef不是类或名称空间名称

来自分类Dev

如何在模板化类中为``boost :: array_view''创建typedef

来自分类Dev

如何在模板化类中为``boost :: array_view''创建typedef

来自分类Dev

无法从模板类内的模板函数类调用类函数

来自分类Dev

模板化类的模板专业化

来自分类Dev

同一类内的typedef内的类名称空间?

来自分类Dev

模板类的类成员的专业化

来自分类Dev

不能在模板专门化定义中将一个类的成员typedef用作模板参数

来自分类Dev

对C ++中的类内的typedef函数的怀疑

来自分类Dev

Qt中的模板化类

来自分类Dev

模板化类的静态常量

来自分类Dev

仅枚举的模板化类

来自分类Dev

“命名”模板类实例化

来自分类Dev

检查嵌套的模板化类

来自分类Dev

模板类的模板功能专业化