このコードが実際に正しいと見なされていることに驚きました (gcc 4.2.1):
class A {
public:
const int i;
};
class B: public A {
public:
//B() {}
};
一部の属性を初期化しないようにすることができます。A をインスタンス化しようとすると、コンパイラは文句を言いますが (もちろん同意します)、警告やエラーなしで B をインスタンス化させてください!
さらに悪いことに、コンパイラには一貫性がありません。B の空の ctor のコメントを外すと、B をインスタンス化するときにコンパイラが文句を言います。それとも私はどこかで間違いを犯しましたか?