27 template <typename T, bool = std::is_enum<T>::value>
31 struct is_flag<T, true> : std::false_type { };
33 template <typename T, typename std::enable_if<is_flag<T>::value>::type* =
nullptr>
35 using u_t =
typename std::underlying_type<T>::type;
36 return static_cast<T
>(
static_cast<u_t
>(lhs) | static_cast<u_t>(rhs));
39 template <typename T, typename std::enable_if<is_flag<T>::value>::type* =
nullptr>
41 using u_t =
typename std::underlying_type<T>::type;
42 return static_cast<T
>(
static_cast<u_t
>(lhs) & static_cast<u_t>(rhs));
Definition: DtEnumClassFlag.h:28
T operator&(T lhs, T rhs)
Definition: DtEnumClassFlag.h:40
T operator|(T lhs, T rhs)
Definition: DtEnumClassFlag.h:34