#include "boost/type_traits/is_enum.hpp" #include "boost/mpl/if.hpp" #include struct EnumBase { static char const * identify() { return "Enumeration"; } }; struct GenericBase { static char const * identify() { return "Generic" ; } }; template class Foo : public boost::mpl::if_, EnumBase, GenericBase>::type {}; enum BarEnum { Mon, Tue, Wed }; int main() { std::cout << Foo::identify() << std::endl; std::cout << Foo::identify() << std::endl; return 0; }