未命名的命名空间链接是内部的还是外部的或混合的

时间:2019-01-12 21:36:37

标签: c++ namespaces linkage

我正在读一本书,对链接到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;
}

然后是普通名称空间(命名空间)的情况。

谢谢。

0 个答案:

没有答案