应该在头文件中使用C++命名空间别名吗?

Mr.*_*Boy 11 c++ namespaces

在C++标头中使用它被认为是不好的做法using namespace.在标头中使用命名空间别名同样是个坏主意,每个实现文件应该声明它希望使用的别名吗?

由于标题是您倾向于使用完全指定名称的位置(因为我们不在标题中使用名称空间),所以别名会很有用,但它们仍然会通过您的源传播#included.

这里的最佳做法是什么?什么空间别名的范围是什么?

Fab*_*ssi 8

如果您将名称空间别名放入标题中,则此别名将成为您的(公共)API的一部分.

有时这种技术用于进行ABI兼容版本控制(或者至少可以使破损可见),如下所示:

namespace lib_v1 { ... }
namespace lib_v2 { ... }
namespace lib = lib_v2;
Run Code Online (Sandbox Code Playgroud)

或者更常见的是:

namespace lib {
   namespace v1 {}
   namespace v2 {}
   using namespace v2;
}
Run Code Online (Sandbox Code Playgroud)

另一方面,如果你这样做只是为了节省一些打字,那可能不是一个好主意.(仍比使用using指令好得多)