私のコンパイラは(実際に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 もコンパイルしません。