使用元类将所有枚举类类型强制为具有公共元素

时间:2018-08-07 11:21:07

标签: c++ enums metaclass

在我的一个库中,我有一堆enum class类型用于某些struct / class和/或成员函数模板:

enum class Param
{
    Undef,
    P1,
    P2,
    P3,
    P4
};

enum class Type
{
    Undef,
    T1,
    T2,
    T3,
    T4
};

您明白了。我确保在每个 Undef中手动插入一个enum元素,我将其用作某些模板的默认设置:

template<Type t>
struct Container
{
    template <Param p = Param::Undef>
    void func() {};
}

由于我希望库中的所有所有 enum个元素都具有一个Undef元素,因此能够从编译器中请求该元素非常好。基本上,我希望能够遍历所有enum并注入一个Undef元素(如果不存在)。

我的问题是,c++20中的元类是否可以实现?如果是,代码会是什么样子(例如,使用Herb Sutter's建议)?

0 个答案:

没有答案