Search code examples
c++abstract-classcompile-timestatic-assert

How to check, if the class is abstract, at compile time?


By an abstract class I mean the class with at least one pure virtual method. I want the compilation to fail, if the check shows that the class is not abstract.

Is it even possible?


Solution

  • Use std::is_abstract.

    #include <type_traits>
    
    static_assert(std::is_abstract<T>(), "T ought to be abstract.");
    

    See it in action.