【发布时间】:2017-03-18 18:55:37
【问题描述】:
我有两个(多个)枚举:
enum Choices1 : int
{
a,
b
};
enum Choices2 : int
{
c,
d
};
我希望能够将类型与这些枚举选项中的每一个相关联。如果我只有一组枚举说Choices1,我可以介绍:
template <Choices1 c>
struct choice_traits;
然后为每个条目专门化它:
template <>
struct choice_traits<Choices1::a>
{
using MyType = float;
};
template <>
struct choice_traits<Choices1::b>
{
using MyType = double;
但我希望能够为多个枚举做到这一点,同时使用相同的关键字,即:
template <>
struct choice_traits<Choices1::a>
{...};
template <>
struct choice_traits<Choices1::b>
{...};
template <>
struct choice_traits<Choices2::c>
{...};
template <>
struct choice_traits<Choices2::d>
{...};
这可能吗?如果是这样,非特化的情况是什么?
如果没有,是否有任何替代方法可以将类型关联到每个 (Choice1::a,Choice1::b,Choice2::c,Choice2::d) 以及可能更多这样的枚举?
【问题讨论】:
标签: c++ c++11 templates enums template-specialization