ami*_*min 9 c++ templates constexpr c++11 c++14
这些成员变量之间有什么区别:
struct my_class {
static const int i = 0;
static constexpr int j = 0;
};
Run Code Online (Sandbox Code Playgroud)
如果我的理解是正确的,我可以使用它们i和j编译时常量.也就是说,无论是std::array<int, my_class::i>和std::array<int,my_class::j>应该工作.
积分或枚举类型的成员没有区别(如您的示例中所示).对于所有其他类型,常量表达式需要constexpr:
除非适用,否则左值到右值的转换(4.1)
- 一个非整数或枚举类型的非易失性glvalue,它引用一个完整的非易失性const对象,具有前面的初始化,用常量表达式初始化,或者[...]
- 一个非易失性glvalue,它引用一个非易失性对象
constexpr,或者引用这样一个对象的不可变子对象,或者[...]