Der folgende Beispielcode kompiliert sauber in MSVC 2012:Lint (Klirren) Beschwerden über 'Überschreibung' in Spezialisierung
struct S1
{
virtual void f() {}
};
template<typename T> struct S2 : S1
{
void f() override {}
};
template<> void S2<int>::f() override {}
Allerdings, wenn ich PC-Lint Plus-Lauf auf dem Code (die auf Clang basiert) es meldet Fehler:
template<> void S2<int>::f()^ override {}
test.cpp(11): error 4645: expected ';' at end of declaration
template<> void S2<int>::f() override {}^
test.cpp(11): error 4933: expected ';' after top level declarator
Übrigens, wenn ich die override
Spezifizierer entfernen, Fussel eine Notiz aussendet, dass es fehlt.
Ist das ein Flusen/CLang Bug oder mache ich etwas falsch?
Sie sollten nicht 'virtual' /' override'/'final' in der Definition, nur in der Deklaration. – Jarod42
Also ist MSVC2012 falsch in der Annahme der "override"? –