3#include "namespace.hpp"
11 struct enum_flag_type : std::false_type
15 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
16 inline constexpr T operator|(T lhs, T rhs)
noexcept
18 return static_cast<T
>(
static_cast<std::underlying_type_t<T>
>(lhs) |
static_cast<std::underlying_type_t<T>
>(rhs));
21 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
22 inline constexpr T &operator|=(T &lhs, T rhs)
noexcept
24 lhs = operator|(lhs, rhs);
28 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
29 inline constexpr T operator&(T lhs, T rhs)
noexcept
31 return static_cast<T
>(
static_cast<std::underlying_type_t<T>
>(lhs) &
static_cast<std::underlying_type_t<T>
>(rhs));
34 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
35 inline constexpr T &operator&=(T &lhs, T rhs)
noexcept
37 lhs = operator&(lhs, rhs);
41 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
42 inline constexpr T operator~(T lhs)
noexcept
44 return static_cast<T
>(~static_cast<std::underlying_type_t<T>>(lhs));
47 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
48 inline constexpr T operator^(T lhs, T rhs)
noexcept
50 return static_cast<T
>(
static_cast<std::underlying_type_t<T>
>(lhs) ^
static_cast<std::underlying_type_t<T>
>(rhs));
53 template <typename T, typename std::enable_if_t<enum_flag_type<T>::value> * =
nullptr>
54 inline constexpr T &operator^=(T &lhs, T rhs)
noexcept
56 lhs = operator^(lhs, rhs);
Root namespace for the Image Manager interface.
Definition version.hpp:11