[英]C++ and C++11 class static member, double should use “constexpr” while int can be “const”, why?
[英]static const vs constexpr member fields in C++11/14?
這些成員變量之間有什么區別:
struct my_class {
static const int i = 0;
static constexpr int j = 0;
};
如果我的理解是正確的,我可以使用i
和j
作為編譯時常量。 也就是說, std::array<int, my_class::i>
和std::array<int,my_class::j>
都應該有效。
積分或枚舉類型的成員沒有區別(如您的示例中所示)。 對於所有其他類型,常量表達式需要constexpr
:
除非適用,否則左值到右值的轉換(4.1)
- 一個非整數或枚舉類型的非易失性glvalue,它引用一個完整的非易失性const對象,具有前面的初始化,用常量表達式初始化,或者[...]
- 一個非易失性glvalue,指的是用
constexpr
定義的非易失性對象,或者指的是這種對象的不可變子對象,或者[...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.