簡體   English   中英

C ++ 11/14中的static const vs constexpr成員字段?

[英]static const vs constexpr member fields in C++11/14?

這些成員變量之間有什么區別:

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

如果我的理解是正確的,我可以使用ij作為編譯時常量。 也就是說, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM