21 template<
typename Enum>
26 template <
typename Enum,
typename Type>
27 using FlagReturn =
typename std::enable_if<Flag<Enum>::enable, Type>;
29 template<
typename Enum>
33 return static_cast<typename std::underlying_type<Enum>::type
>(enum_1);
36 template<
typename Enum>
42 template<
typename Enum>
48 template<
typename Enum>
54 template<
typename Enum>
60 template<
typename Enum>
63 enum_1 = enum_1 & enum_2;
67 template<
typename Enum>
70 enum_1 = enum_1 | enum_2;
74 template<
typename Enum>
77 enum_1 = enum_1 ^ enum_2;
81 template<
typename Enum>
88 template <
typename Enum>
94 template<
typename Enum>
97 return to_bool(enum_1 & enum_2);
100 template<
typename Enum,
typename Function>
105 auto pure = enum_1 & mask;
106 if (pure != Enum(0))
function(pure);
Mark a strongly typed enumerator as a flag.
Definition: Flag.hh:22
FlagReturn< Enum, Enum & >::type operator<<=(Enum &enum_1, Enum enum_2)
Definition: Flag.hh:82
FlagReturn< Enum, bool >::type to_bool(Enum value)
Definition: Flag.hh:89
FlagReturn< Enum, Enum >::type operator~(Enum enum_1)
Definition: Flag.hh:55
FlagReturn< Enum, Enum >::type operator&(Enum enum_1, Enum enum_2)
Definition: Flag.hh:37
FlagReturn< Enum, Enum & >::type operator|=(Enum &enum_1, Enum enum_2)
Definition: Flag.hh:68
FlagReturn< Enum, Enum >::type operator^(Enum enum_1, Enum enum_2)
Definition: Flag.hh:49
static const bool enable
Definition: Flag.hh:23
void FlagSwitch(Enum enum_1, Function function)
Definition: Flag.hh:101
Boosted Collider Analysis.
Definition: Analysis.hh:15
FlagReturn< Enum, bool >::type is(Enum enum_1, Enum enum_2)
Definition: Flag.hh:95
typename std::enable_if< Flag< Enum >::enable, Type > FlagReturn
Definition: Flag.hh:27
FlagReturn< Enum, typename std::underlying_type< Enum >::type >::type Underlying(Enum enum_1)
Definition: Flag.hh:31
constexpr FlagReturn< Enum, Enum >::type operator|(Enum enum_1, Enum enum_2)
Definition: Flag.hh:43
FlagReturn< Enum, Enum & >::type operator&=(Enum &enum_1, Enum enum_2)
Definition: Flag.hh:61
FlagReturn< Enum, Enum & >::type operator^=(Enum &enum_1, Enum enum_2)
Definition: Flag.hh:75