我理解使用匿名命名空间的一般情况是为了包含仅应在当前源文件(即非头文件)中可见的代码。但是,我无法找到有关下面情况发生的任何信息:
// In foo.cpp
#include <vector>
// Choice #1
template <typename T>
using Vec1 = std::vector<T>;
// Choice #2
namespace {
template <typename T>
using Vec2 = std::vector<T>;
}
Vec1
和 Vec2
有什么区别吗?由于我无法想到一种在头文件中具有“extern”类型别名以引用Vec1
的方法,所以我不确定这里的匿名命名空间是否起到任何作用。