Bap*_*tou 5 c++ typedef using-declaration type-alias
这不是关于类型别名之间using以及typedef创建类型别名之间的区别的问题。我想提供从代码块或函数内部的名称空间访问现有类型的权限。
我发现了两种不同的方式:
我可以使用using声明“包含”类型:
using typename mynamespace::mytype;
Run Code Online (Sandbox Code Playgroud)
或者我可以创建一个类型别名:
typedef mynamespace::mytype mytype;
using mytype = mynamespace::mytype; //C++11
Run Code Online (Sandbox Code Playgroud)
谢谢。
有什么区别吗?
名称空间中名称的类型别名可以出现在类中
struct S { using mytype = mynamespace::mytype; };
Run Code Online (Sandbox Code Playgroud)
而使用声明可能不会。
每种语法的优缺点是什么?
如果要处理类范围,上一点是一个很大的缺点。
除此之外,这两种方法非常相似。别名是一个新名称,完全代表别名的类型。虽然using声明将类型的现有名称纳入范围。如果mytype两者都使用,则不会有任何区别。
哪个是最常用/推荐的?
我对此是否达成共识表示怀疑。在必须使用时(类别范围)使用您必须使用的一种,否则,请遵循团队的风格指南。