Обеспечение того, чтобы все типы классов перечисления имели общий элемент с использованием метаклассов

В одной из моих библиотек у меня есть куча 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? Если да, то как бы выглядел код (например, используя Херб Саттерс предложение)?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]