The cppcoreguidelines-virtual-class-destructor supposed to enforce
http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-non-virtual
Quote:
A base class destructor should be either public and virtual, or
protected and non-virtual
[emphasis mine]
However, this check still rules the following case:
class MostDerived final : public Base { public: MostDerived() = default; ~MostDerived() = default; void func() final; };
Even though MostDerived class is marked final, thus it should not be
considered as a base class. Consequently, the rule is satisfied, yet
the check still flags this code.
In this patch, I'm proposing to ignore final classes since they cannot
be base classes.
I believe the convention is to use double-backtick for C++ keywords and functions, see line 160.