这个问题在这里已经有了答案:
Why does cppreference define type_traits xxx_v shortcuts as inline constexpr and not just constexpr?
(2 个回答)
9 个月前关闭。
我注意到 C++ 标准库通过变量模板定义特征,这些模板显式声明为内联:
template <class T> inline constexpr bool is_void_v = is_void<T>::value;
template <class T> inline constexpr bool is_null_pointer_v = is_null_pointer<T>::value;
template <class T> inline constexpr bool is_integral_v = is_integral<T>::value;
我认为默认情况下所有变量模板都是内联的。在这种情况下,是否有任何特殊原因将它们声明为内联?
最佳答案
都是 static
的类(class)成员和 constexpr
也隐含 inline
.非成员(member)没有此属性。并且变量模板不是隐式 inline
.
确实,非static
, 非成员模板函数和变量必须显式声明 inline
.
关于c++ - C++ 变量模板是内联的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66283355/