Почему C ++ не нужны прямые объявления для членов класса?

Я находился под впечатлением, что все в C ++ должно быть объявлено перед использованием.

На самом деле, я помню, что читал, что Это причина Почему использование AUTO в типов обратных типов недействительна C ++ 0x без чего-то вроде DECLTYPE ]: Компилятор должен знать заявленный тип до , оценивая функциональный корпус.

Представьте, что мой сюрприз, когда я заметил (после долгого времени), что следующий код на самом деле идеально законно:

[РЕДАКТИРОВАНИЕ: Изменен пример.]

class Foo
{
    Foo(int x = y);
    static const int y = 5;
};

Итак, теперь я не понимаю:

Почему компилятор не требует передовой декларации внутри классов, когда он требует их в других местах?

12
задан Mehrdad 9 September 2011 в 04:23
поделиться