Является ли объявление статического поля типа, который является неполным на момент определения класса, допустимым в C ++? Например:
foo.h:
class Foo
{
public:
// ...
private:
class Bar;
static Bar something;
};
foo.cpp:
class Foo::Bar
{
// ...
};
Foo::Bar Foo::something;
// some more code
Компиляторы, кажется, принимают это, и я не вижу причин, по которым он должен быть отклонен, но что стандарт говорит о такой ситуации? Я был бы очень признателен, если бы кто-то дал прямую цитату из стандарта, предпочтительно из «старого» (из 2003 года).