具有强类型枚举的模板参数推导
-
29-10-2019 - |
题
如果我具有普通(弱)枚举,则可以将其枚举值用作非类型模板参数,如下所示: 通用标签
并将其称为:magic<Cat>(t)
据我所知,如果我有一个强类型的枚举并且不想对枚举类型进行硬编码,那么我最终得到: 通用标签
现在我必须写:magic<Animal, Animal::Cat>(t)
,这似乎是多余的。
有什么办法可以避免同时输入枚举类和值 通用标签
解决方案
如果可以使用C ++ 17,则可以这样操作 通用标签
其他提示
对不起,我必须告诉你
不可能
采用该宏,将其放入一个可怕的命名头中,并防止其受到同事的清理脚本的破坏。希望最好的。
如果您只对enum
的值感兴趣,而对它的类型不感兴趣,则应该能够使用constexpr
函数将值转换为整数,避免重复输入类型名。
通用标签
但是,正如其他人已经指出的那样,如果您也想使它依赖于类型,那么它将无法正常工作。
不隶属于 StackOverflow