Статическое поле неполного типа - допустимо ли?

Является ли объявление статического поля неполным на момент определения класса законным в 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 года).

16
задан 9 November 2011 в 17:18
поделиться