我的编译器(实际上Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
)接受(编译)该代码:
class X {
private:
int i;
public:
const X() { cout << "here" << endl; i=0; }
void f() const {}
void g() {}
};
int main() {
const X x;
x.f();
// x.g();
X y;
y.f();
y.g();
}
它的工作方式好像没有const
引导 ctor 定义的限定符。我试过了-Wall
,-pedantic
不同类型的标准激活,总是一样的......所以:
- 我错过了什么吗?我无法发现它在最新标准中的语法是正确的……</li>
- 这是 gcc/llvm 的错误吗?似乎
gcc/llvm
默默无视了const
。 - 这是我错过的功能,我的示例无法证明其有用性吗?
注意:gcc 3.4.3 不编译它,gcc 4.4.5 也不编译。