【发布时间】:2021-08-11 15:26:50
【问题描述】:
我有一个模板函数,目前看起来像这样:
#include <string>
enum class Enum { EVENT_ONE, EVENT_TWO };
template<Enum e, typename T>
void MyFunc() { }
int main(int argc, const char* argv[])
{
MyFunc<Enum::EVENT_ONE, int>();
MyFunc<Enum::EVENT_TWO, std::string>();
}
我想在enum class 和typename template 之间创建一些常量映射,以使其更简单。
理想情况下,此方法应仅获取枚举作为模板,并且类型名模板将使用预定义的映射以某种方式解析。
int main(int argc, const char* argv[])
{
MyFunc<Enum::EVENT_ONE>();
MyFunc<Enum::EVENT_TWO>();
}
在现代 C++(C++17 或 C++20)中是否可行?
【问题讨论】:
标签: c++ templates enums c++17 typetraits