我知道,链接时模板函数不会遭受多个定义,例如在类内定义的成员函数,默认情况下是内联的。另外,constexpr
对象具有内部链接,但是模板变量具有外部链接(我的意思是在命名空间范围,对于C 14)。
呢?
template<class T>
constexpr T i_am_odr_safe{};
i_am_odr_safe
在C 14中是否具有外部或内部链接?对于功能模板(例如功能模板),这是安全的吗?
换句话说,i_am_odr_safe
ODR-SAFE?
这是核心问题1713,IIRC的方向是该变量模板将具有外部链接。
否,这尚未解决,这就是为什么LWG决定在标准库中使用P0604R0的A B2时,将inline
涂抹在整个变量模板上。