使用现有名称空间类型的声明与创建类型别名的关系

问题描述 投票:4回答:1

这不是关于创建类型别名的usingtypedef之间的区别的问题。我想从代码块或函数内部的名称空间提供对现有类型的访问。

我发现了两种不同的方式:

我可以使用using声明“包含”类型:

using typename mynamespace::mytype;

或者我可以创建类型别名:

typedef mynamespace::mytype mytype;
using mytype = mynamespace::mytype; //C++11
  1. 有什么区别吗?
  2. 每种语法的优缺点是什么?
  3. 哪个是最常用/推荐的?

谢谢。

相关问题:Using-declaration of an existing type from base class vs creating a type alias inside child class

c++ typedef type-alias using-declaration
1个回答
4
投票

有什么区别吗?

[中名称的类型别名可以出现在类中

struct S { using mytype = mynamespace::mytype; };
虽然可能没有使用声明。

每种语法的优缺点是什么?

如果要处理类范围,上一点是很大的缺点。

除了这两种方法非常相似。别名是一个新名称,完全代表别名的类型。虽然using声明将类型的现有名称纳入范围。如果同时使用mytype,则不会有任何区别。

哪个是最常用/推荐的?

我怀疑是否对此达成共识。在必须使用时,使用必需的内容(类作用域),否则,请遵循团队的风格指南。

© www.soinside.com 2019 - 2024. All rights reserved.