首页 > 解决方案 > C++ 变量模板是内联的吗?

问题描述

我注意到 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;

我认为默认情况下所有变量模板都是内联的。在这种情况下,是否有任何特别的理由将它们声明为内联?

标签: c++c++17

解决方案


既是staticconstexpr是隐含的类成员inline。非会员没有这个属性。并且变量模板不是隐式的inline

事实上,非static、非成员模板函数和变量必须显式声明inline


推荐阅读