我知道模板函数在链接时不会有多个定义,比如在类中定义的成员函数,默认情况下是内联的。此外,constexpr
个对象具有内部链接,但模板变量具有外部链接(我的意思是在命名空间范围内,在两种情况下都是C ++ 14)。
怎么样?
template<class T>
constexpr T i_am_odr_safe{};
i_am_odr_safe
在C ++ 14中是否有外部或内部链接?对于像函数模板这样的多重定义是否安全?
换句话说,i_am_odr_safe
是否安全?
答案 0 :(得分:7)
这是core issue 1713,IIRC的方向是该变量模板将具有外部链接。
不,这还没有得到解决,这就是为什么当LWG采用P0604R0的A + B2时,LWG决定在标准库中的所有可变模板上添加inline
。