クラスCにタイプCの静的constexprメンバーを持たせたいのですが、これはC ++ 11で可能ですか?
試行1:
struct Foo {
constexpr Foo() {}
static constexpr Foo f = Foo();
};
constexpr Foo Foo::f;
g ++ 4.7.0によると:「不完全な型の無効な使用」はFoo()
呼び出しを参照しています。
試行2:
struct Foo {
constexpr Foo() {}
static constexpr Foo f;
};
constexpr Foo Foo::f = Foo();
ここで問題となるのは、クラス定義内のconstexpr
メンバーの初期化子がないことです。f
試行3:
struct Foo {
constexpr Foo() {}
static const Foo f;
};
constexpr Foo Foo::f = Foo();
Foo::f
ここで、g++は。の違いの再宣言について文句を言いconstexpr
ます。