статический член constexpr того же типа, что и определяемый класс
Я хотел бы, чтобы класс C имел статический член constexpr типа C. Возможно ли это в 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
.