gpt4 book ai didi

c++ - 如何强制模板参数为枚举或枚举类?

转载 作者:行者123 更新时间:2023-12-02 06:34:25 25 4
gpt4 key购买 nike

我实现了以下类:

template<typename Enum>
class EnumDescription
{
//TODO Force Enum to be an enum type

public:
static std::string get( const Enum val );
};

这按预期工作,但现在我想将枚举模板参数限制为仅枚举/枚举类。

最佳答案

取决于您对 C++ 的喜好。

C++17

最容易编写的方式是静态断言

template<typename Enum>
class EnumDescription
{
static_assert(std::is_enum_v<Enum>);

public:
static std::string get( const Enum val );
};

C++20

您可以在模板上指定临时约束

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 );
};

关于c++ - 如何强制模板参数为枚举或枚举类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60524480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com