У меня есть предварительно объявленное перечисление:
enum class TheEnum : std::uint32_t;
С последующей перегрузкой оператора:
constexpr TheEnum operator|(TheEnum const a, TheEnum const b)
{
return TheEnum(std::uint32_t(a) | std::uint32_t(b));
}
С определением:
enum class TheEnum : std::uint32_t
{
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
D = 1 << 3,
Val0 = TheEnum::A | TheEnum::C,
Val1 = TheEnum::A | TheEnum::D,
Val2 = TheEnum::B | TheEnum::D
};
Я пытаюсь получить оператор | constexpr и не constexpr одновременно. В настоящее время, если я добавлю (не constexpr):
inline TheEnum operator|(TheEnum const a, TheEnum const b)
{
return TheEnum(std::uint32_t(a) | std::uint32_t(b));
}
Мой компилятор сказал, что он уже определен. Constexpr позволяет мне выполнять некоторые типовые операции, но мне нужны те же операторы для оценки времени выполнения.