我从两个翻译单元中获取以下实例化变量模板的地址:
template<class T> bool b = true;
template<class T> const bool cb = true;
template<class T> inline const bool icb = true;
我正在打印和b<int>
的地址。这是clang所说的:cb<int>
icb<int>
0x6030c0 0x401ae4 0x401ae5 // first translation unit
0x6030c0 0x401ae4 0x401ae5 // second translation unit
所有地址都是相同的,有点预期。这是gcc 所说的:
0x6015b0 0x400ef5 0x400ef4 // first translation unit
0x6015b0 0x400ef6 0x400ef4 // second translation unit
cb<int>
变更地址。嗯?这是一个错误吗?如果没有,有人可以向我解释这种影响吗?