10#ifndef BOOST_CLBL_TRTS_QUALIFIER_FLAGS_HPP
11#define BOOST_CLBL_TRTS_QUALIFIER_FLAGS_HPP
15namespace boost {
namespace callable_traits {
namespace detail {
52#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
72template<qualifier_flags Flags>
76template<qualifier_flags Flags>
80template<qualifier_flags Flags>
84template<typename U, typename T = typename std::remove_reference<U>::type>
91 std::is_rvalue_reference<T>::value ?
rref_
92 : (std::is_lvalue_reference<T>::value ?
lref_
98 bool AlreadyHasRef = (Existing & (
lref_ |
rref_)) != 0,
99 bool AlreadyHasLRef = (Existing &
lref_) ==
lref_,
103 !AlreadyHasRef ? (Existing | Other)
104 : (AlreadyHasLRef ? (Existing | (Other & ~
rref_))
105 : (IsAddingLRef ? ((Existing & ~
rref_) | Other )
106 : (Existing | Other)))>;
constexpr qualifier_flags volatile_
constexpr qualifier_flags rref_
constexpr qualifier_flags const_
std::integral_constant< qualifier_flags,(std::is_const< T >::value ? const_ :default_)|(std::is_volatile< T >::value ? volatile_ :default_)> cv_of
std::integral_constant< qualifier_flags, std::is_rvalue_reference< T >::value ? rref_ :(std::is_lvalue_reference< T >::value ? lref_ :default_)> ref_of
constexpr qualifier_flags cv_
std::integral_constant< qualifier_flags, Flags &~const_ > remove_const_flag
constexpr qualifier_flags lref_
std::uint32_t qualifier_flags
std::integral_constant< qualifier_flags, !AlreadyHasRef ?(Existing|Other) :(AlreadyHasLRef ?(Existing|(Other &~rref_)) :(IsAddingLRef ?((Existing &~rref_)|Other) :(Existing|Other)))> collapse_flags
constexpr qualifier_flags default_
std::integral_constant< qualifier_flags, Flags &~volatile_ > remove_volatile_flag
std::integral_constant< bool,(Flags &const_) !=0 > is_const
static constexpr qualifier_flags value