【发布时间】:2013-11-24 23:55:35
【问题描述】:
我的编译器(实际上是 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 不同类型的标准激活,总是一样的......所以:
- 我错过了什么吗?我无法发现它在最新标准中的语法是正确的……
- 这是 gcc/llvm 的错误吗?似乎
gcc/llvm默默地忽略了const。 - 这是我错过的功能,我的示例无法证明其有用性吗?
注意:gcc 3.4.3 不编译,gcc 4.4.5 也不编译。
【问题讨论】:
-
嗯,这似乎不允许异常规范。在 C++1y 的最新草案中有所不同;它明确允许异常规范和属性,但似乎仍然不允许类型说明符,例如
const。 -
提交了bugreport。
标签: c++ gcc constructor constants clang