次のような 3 つのクラスのクラス ツリーがあります。
class A {
public:
virtual void function() = 0;
};
template<typename type> class B : public A {
};
template<typename type> class C : public B<type> {
void function() override {
}
};
override
キーワード inを使用してC
、定義が間違っている場合にコンパイラにエラーを発行させます。でコンパイルするとGCC
、エラーは発生せず、プログラムはコンパイルされます。function()
基本クラスで virtual が定義されているため、これは正しい動作だと思いますA
。
ただし、これをコンパイルするとclang
、 に関数が見つからず、A
素敵な色でコンパイル エラーが発生します。
test.cpp:10:2: error: only virtual member functions can be marked 'override'
void function() override {
これは のバグclang
ですか、それともこうあるべきなのでしょうか?