Я хотел бы, чтобы класс 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();
Теперь g++ жалуется на повторную декларацию Foo::f
, отличающуюся constexpr
.