Refureku v2.2.0
C++17 runtime reflection library.
EnumMacros.h
1
8#pragma once
9
10#include <type_traits>
11
12#define RFK_GENERATE_ENUM_OPERATORS(EnumName) \
13constexpr EnumName operator|(EnumName flags1, EnumName flags2) noexcept \
14{ \
15 using UnderlyingType = std::underlying_type_t<EnumName>; \
16 \
17 return static_cast<EnumName>(static_cast<UnderlyingType>(flags1) | static_cast<UnderlyingType>(flags2)); \
18} \
19 \
20constexpr EnumName operator&(EnumName flags1, EnumName flags2) noexcept \
21{ \
22 using UnderlyingType = std::underlying_type_t<EnumName>; \
23 \
24 return static_cast<EnumName>(static_cast<UnderlyingType>(flags1) & static_cast<UnderlyingType>(flags2)); \
25}
26