这不是关于创建类型别名的using
和typedef
之间的区别的问题。我想从代码块或函数内部的名称空间提供对现有类型的访问。
我发现了两种不同的方式:
我可以使用using声明“包含”类型:
using typename mynamespace::mytype;
或者我可以创建类型别名:
typedef mynamespace::mytype mytype;
using mytype = mynamespace::mytype; //C++11
谢谢。
相关问题:Using-declaration of an existing type from base class vs creating a type alias inside child class
有什么区别吗?
[中名称的类型别名可以出现在类中
struct S { using mytype = mynamespace::mytype; };
虽然可能没有使用声明。每种语法的优缺点是什么?如果要处理类范围,上一点是很大的缺点。
除了这两种方法非常相似。别名是一个新名称,完全代表别名的类型。虽然using声明将类型的现有名称纳入范围。如果同时使用
mytype
,则不会有任何区别。哪个是最常用/推荐的?我怀疑是否对此达成共识。在必须使用时,使用必需的内容(类作用域),否则,请遵循团队的风格指南。