Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的static const vs constepr成员字段+;11/14?_C++_Templates_C++11_C++14_Constexpr - Fatal编程技术网

C++ C+中的static const vs constepr成员字段+;11/14?

C++ C+中的static const vs constepr成员字段+;11/14?,c++,templates,c++11,c++14,constexpr,C++,Templates,C++11,C++14,Constexpr,这些成员变量之间的区别是什么: struct my_class { static const int i = 0; static constexpr int j = 0; }; 如果我的理解是正确的,我可以使用I和j作为编译时常量。也就是说,std::array和std::array都应该可以工作。整数或枚举类型的成员没有区别(如您的示例所示)。对于所有其他类型,常量表达式: 左值到右值的转换(4.1),除非应用于 整型或枚举型的非易失性glvalue,它引用具有前一个 初始

这些成员变量之间的区别是什么:

struct my_class {
    static const int i = 0;
    static constexpr int j = 0;
};

如果我的理解是正确的,我可以使用
I
j
作为编译时常量。也就是说,
std::array
std::array
都应该可以工作。

整数或枚举类型的成员没有区别(如您的示例所示)。对于所有其他类型,常量表达式:

左值到右值的转换(4.1),除非应用于

  • 整型或枚举型的非易失性glvalue,它引用具有前一个 初始化,使用常量表达式初始化,或[…]
  • 一种非易失性glvalue,指用
    constexpr
    定义的非易失性对象,或指此类对象的不可变子对象 对象,或[…]

读了那个问题后,我仍然无法找到我问题的答案:-)@HumamHelfawi我想知道当constexpr是静态的时,它有什么区别。这有点不同。