Зависит от вашего вкуса C ++.
C ++ 17
Самый простой способ написать это утверждение c
template<typename Enum>
class EnumDescription
{
static_assert(std::is_enum_v<Enum>);
public:
static std::string get( const Enum val );
};
C ++ 20
Вы можете указать ad-ho c ограничение для шаблона
template<typename Enum> requires std::is_enum_v<Enum>
class EnumDescription
{
public:
static std::string get( const Enum val );
};
или, возможно, к лучшему, с многоразовым понятием
template<typename E>
concept EnumType = std::is_enum_v<E>;
template<EnumType Enum>
class EnumDescription
{
public:
static std::string get( const Enum val );
};