статический член 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.

Ответы на вопрос(3)

Ваш ответ на вопрос