У меня создалось впечатление, что все, что должно быть в С++, должно быть объявлено до использования.
На самом деле, я помню, что я читал, что это причина, по которой использование типов auto
в возвращаемых типах недопустимо С++ 0x без чего-то вроде decltype
: компилятор должен знать объявленный тип до, оценивая тело функции.
Представьте мое удивление, когда я заметил (после долгого времени), что следующий код на самом деле совершенно легален:
[Изменить: Изменен пример.]
class Foo
{
Foo(int x = y);
static const int y = 5;
};
Итак, теперь я не понимаю: