我有三個類的這樣一類樹「覆蓋」關鍵字:鏘和派生的模板類
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 {
}
};
我使用C
的override
關鍵字使編譯器發出一個錯誤,如果我得到的定義錯誤。當用GCC
進行編譯時,我沒有收到任何錯誤並且程序編譯。我認爲這是正確的行爲,因爲function()
在基類A
中定義爲虛擬。
如果我編譯它與clang
但是,它並沒有找到A
的功能,並與漂亮的顏色發出一個編譯器錯誤:
test.cpp:10:2: error: only virtual member functions can be marked 'override'
void function() override {
這是clang
的錯誤呢,還是應該是這樣嗎?
哪個版本的'clang'? – BoBTFish
Sry,繼承人整個事情:'Debian鏗鏘版3.0-6.2(tags/RELEASE_30/final)(基於LLVM 3.0)' – Atle
是的,這不是我的鏈上的問題:'clang-500.2.79(基於在LLVM 3.3svn上)' – WhozCraig