static constexpr
の属性ではいくつかの問題があります:enum class
というメンバで整数型で動作しますが、静的に初期化された整数配列で処理しようとすると、 undefined reference to S::a
の中にmain
というリンクがあります。C++ 14静的constexprメンバ配列がリンク時に失敗する
これは、clang 3.9またはg ++ 6.3、およびld 2.27.90のいずれかです。そしてそれはすべて-std=c++14
です。ここで
はこれを再現する最も簡単なスニペットです:
struct S
{
static constexpr int a[5] = {0};
};
int main()
{
S s{};
[[gnu::unused]] int b = s.a[0]; // force S stuff to be emitted
return 0;
}
は、あなたがこのような状況のために持っている可能性のある提案をいただき、ありがとうございます。
オブジェクトを定義する必要があります。名前空間のスコープ: 'constexpr int S :: a [5];' – ildjarn
@ildjarnありがとう!なぜ私は配列のためにこれをしなければならないのか分かりませんが、単純な整数型のような他のもののためにはできません。 – suut