【发布时间】:2011-09-09 04:11:58
【问题描述】:
我的印象是 C++ 中的所有内容都必须在使用前声明。
事实上,我记得读过这就是为什么在没有decltype 之类的情况下在返回类型中使用auto 是无效的C++0x 的原因:编译器必须知道在评估函数体之前声明类型。
当我注意到(经过很长时间)以下代码实际上完全合法时,想象一下我的惊讶:
[编辑:更改示例。]
class Foo
{
Foo(int x = y);
static const int y = 5;
};
所以现在我不明白:
当编译器在其他地方需要前向声明时,为什么编译器不需要在类中进行前向声明?
【问题讨论】: