我正在读一本书,对链接到namaspaces有一些含糊之处。
据我阅读,
当您需要声明全局符号时 作为静态变量以避免链接问题,建议使用未命名 命名空间
好,因此在未命名的名称空间中,定义的内容将具有内部链接(如在全局名称空间中使用static)。
然后添加写内容:
模板参数不能是具有内部链接的名称, 因此无法使用静态变量。
好的,到现在为止。
另一方面,未命名名称空间中的符号具有外部链接,可以用作模板参数。
所以我在这里迷路了,未命名空间的内容将具有内部还是外部链接?
#include <iostream>
template <int const& Size>
class test {};
static int Size1 = 10;
namespace
{
int Size2 = 10;
}
int main(void)
{
test<Size1> t1; // said here gonna produce a compile error but was not the case
test<Size2> t2;
return 0;
}
然后是普通名称空间(命名空间)的情况。
谢谢。