4#ifndef TETL_BIT_IS_BITMASK_TYPE_HPP
5#define TETL_BIT_IS_BITMASK_TYPE_HPP
7#include <etl/_type_traits/bool_constant.hpp>
8#include <etl/_type_traits/underlying_type.hpp>
18concept bitmask_type = is_bitmask_type_v<T>;
20template <bitmask_type T>
21[[nodiscard]]
constexpr auto operator&(T x, T y) -> T
23 using type = underlying_type_t<T>;
24 return T{
static_cast<type>(
static_cast<type>(x) &
static_cast<type>(y))};
27template <bitmask_type T>
28[[nodiscard]]
constexpr auto operator|(T x, T y) -> T
30 using type = underlying_type_t<T>;
31 return T{
static_cast<type>(
static_cast<type>(x) |
static_cast<type>(y))};
34template <bitmask_type T>
35[[nodiscard]]
constexpr auto operator^(T x, T y) -> T
37 using type = underlying_type_t<T>;
38 return T{
static_cast<type>(
static_cast<type>(x) ^
static_cast<type>(y))};
41template <bitmask_type T>
42[[nodiscard]]
constexpr auto operator~(T x) -> T
44 using type = underlying_type_t<T>;
45 return T{
static_cast<type>(~
static_cast<type>(x))};
48template <bitmask_type T>
49constexpr auto operator|=(T& x, T y)
noexcept -> T
const&
54template <bitmask_type T>
55constexpr auto operator&=(T& x, T y)
noexcept -> T
const&
60template <bitmask_type T>
61constexpr auto operator^=(T& x, T y)
noexcept -> T
const&
Definition adjacent_find.hpp:9
constexpr auto operator&=(T &x, T y) noexcept -> T const &
Definition is_bitmask_type.hpp:55
constexpr auto operator~(T x) -> T
Definition is_bitmask_type.hpp:42
constexpr auto operator|(T x, T y) -> T
Definition is_bitmask_type.hpp:28
constexpr auto operator^(T x, T y) -> T
Definition is_bitmask_type.hpp:35
constexpr auto operator&(T x, T y) -> T
Definition is_bitmask_type.hpp:21
constexpr auto operator^=(T &x, T y) noexcept -> T const &
Definition is_bitmask_type.hpp:61
constexpr auto is_bitmask_type_v
Definition is_bitmask_type.hpp:15
constexpr auto operator|=(T &x, T y) noexcept -> T const &
Definition is_bitmask_type.hpp:49
Definition is_bitmask_type.hpp:12