boost::callable_traits::detail Namespace Reference

Classes

struct  add_member_const_impl
 
struct  add_member_const_impl< T, typename std::is_same< add_member_const_t< T >, detail::dummy >::type >
 
struct  add_member_cv_impl
 
struct  add_member_cv_impl< T, typename std::is_same< add_member_cv_t< T >, detail::dummy >::type >
 
struct  add_member_lvalue_reference_impl
 
struct  add_member_lvalue_reference_impl< T, typename std::is_same< add_member_lvalue_reference_t< T >, detail::dummy >::type >
 
struct  add_member_rvalue_reference_impl
 
struct  add_member_rvalue_reference_impl< T, typename std::is_same< add_member_rvalue_reference_t< T >, detail::dummy >::type >
 
struct  add_member_volatile_impl
 
struct  add_member_volatile_impl< T, typename std::is_same< add_member_volatile_t< T >, detail::dummy >::type >
 
struct  add_varargs_impl
 
struct  add_varargs_impl< T, typename std::is_same< add_varargs_t< T >, detail::dummy >::type >
 
struct  make_member_pointer
 
struct  make_member_pointer< T, C, true >
 
struct  make_member_pointer< void, C, true >
 
struct  make_member_pointer< T, C, false >
 
struct  apply_member_pointer_impl
 
struct  apply_member_pointer_impl< T, C, typename std::is_same< apply_member_pointer_t< T, C >, detail::dummy >::type >
 
struct  apply_return_helper
 
struct  apply_return_helper< std::tuple< Args... >, R >
 
struct  apply_return_impl
 
struct  apply_return_impl< T, R, typename std::is_same< apply_return_t< T, R >, detail::dummy >::type >
 
struct  args_impl
 
struct  args_impl< T, Container, typename std::is_same< args_t< T, Container >, detail::dummy >::type >
 
struct  class_of_impl
 
struct  class_of_impl< T, typename std::is_same< class_of_t< T >, detail::dummy >::type >
 
struct  default_callable_traits
 
struct  function
 
struct  has_normal_call_operator
 
struct  callable_dummy
 
struct  pmf
 
struct  pmd
 
struct  function_object
 
struct  function< T & >
 
struct  function_object< T U::*, Base >
 
struct  can_dereference_t
 
struct  generalize_t
 
struct  generalize_t< T, std::integral_constant< bool, can_dereference< T >::value &&!is_reference_wrapper< T >::value > >
 
struct  generalize_t< T, is_reference_wrapper< T > >
 
struct  test_invoke
 
struct  test_invoke< function< F >, true >
 
struct  test_invoke< pmf< Pmf >, Ignored >
 
struct  test_invoke< pmd< Pmd >, Ignored >
 
struct  is_invocable_impl
 
struct  is_invocable_impl< void, Args... >
 
struct  is_invocable_r_impl
 
struct  is_invocable_r_impl< std::false_type, Ret, T, Args... >
 
struct  pmd< D T::* >
 
struct  set_member_function_qualifiers_t
 
struct  set_varargs_member_function_qualifiers_t
 
struct  disjunction
 
struct  disjunction< T >
 
struct  disjunction< T, Ts... >
 
struct  index_sequence
 
struct  concat
 
struct  concat< index_sequence< I1... >, index_sequence< I2... > >
 
struct  make_index_sequence_t
 
struct  make_index_sequence_t< 0 >
 
struct  make_index_sequence_t< 1 >
 
struct  flag_map
 
struct  flag_map< T & >
 
struct  flag_map< T && >
 
struct  flag_map< T const >
 
struct  flag_map< T const & >
 
struct  flag_map< T const && >
 
struct  flag_map< T volatile >
 
struct  flag_map< T volatile & >
 
struct  flag_map< T volatile && >
 
struct  flag_map< T const volatile >
 
struct  flag_map< T const volatile & >
 
struct  flag_map< T const volatile && >
 
struct  set_function_qualifiers_t
 
struct  set_varargs_function_qualifiers_t
 
struct  sfinae_error
 
struct  success
 
struct  fail_if
 
struct  fail
 
struct  cdecl_tag
 
struct  stdcall_tag
 
struct  fastcall_tag
 
struct  pascal_tag
 
struct  invalid_type
 
struct  reference_error
 
struct  dummy
 
struct  substitution_failure
 
struct  force_sfinae
 
struct  is_reference_wrapper_t
 
struct  is_reference_wrapper_t< std::reference_wrapper< T > >
 
struct  unwrap_reference_t
 
struct  unwrap_reference_t< T, is_reference_wrapper< T > >
 
struct  function_type_impl
 
struct  function_type_impl< T, typename std::is_same< function_type_t< T >, detail::dummy >::type >
 
struct  qualified_class_of_impl
 
struct  qualified_class_of_impl< T, typename std::is_same< qualified_class_of_t< T >, detail::dummy >::type >
 
struct  remove_member_const_impl
 
struct  remove_member_const_impl< T, typename std::is_same< remove_member_const_t< T >, detail::dummy >::type >
 
struct  remove_member_cv_impl
 
struct  remove_member_cv_impl< T, typename std::is_same< remove_member_cv_t< T >, detail::dummy >::type >
 
struct  remove_member_reference_impl
 
struct  remove_member_reference_impl< T, typename std::is_same< remove_member_reference_t< T >, detail::dummy >::type >
 
struct  remove_member_volatile_impl
 
struct  remove_member_volatile_impl< T, typename std::is_same< remove_member_volatile_t< T >, detail::dummy >::type >
 
struct  remove_noexcept_impl
 
struct  remove_noexcept_impl< T, typename std::is_same< remove_noexcept_t< T >, detail::dummy >::type >
 
struct  remove_transaction_safe_impl
 
struct  remove_transaction_safe_impl< T, typename std::is_same< remove_transaction_safe_t< T >, detail::dummy >::type >
 
struct  remove_varargs_impl
 
struct  remove_varargs_impl< T, typename std::is_same< remove_varargs_t< T >, detail::dummy >::type >
 
struct  return_type_impl
 
struct  return_type_impl< T, typename std::is_same< return_type_t< T >, detail::dummy >::type >
 

Typedefs

template<typename T , typename C >
using make_member_pointer_t = typename make_member_pointer< T, C >::type
 
template<typename T >
using default_to_function_object = typename std::conditional< has_normal_call_operator< T >::value, T, callable_dummy >::type
 
template<typename F , typename T = typename std::remove_reference<F>::type>
using function_object_base = typename std::conditional< has_normal_call_operator< T >::value, pmf< decltype(&default_to_function_object< T >::operator())>, default_callable_traits< T > >::type
 
template<typename T >
using can_dereference = std::integral_constant< bool, can_dereference_t< T >::value >
 
template<typename T >
using generalize = typename generalize_t< T >::type
 
template<typename Base , typename T , typename IsBaseOf = std::is_base_of<Base, shallow_decay<T>>, typename IsSame = std::is_same<Base, shallow_decay<T>>>
using generalize_if_dissimilar = typename std::conditional< IsBaseOf::value||IsSame::value, T, generalize< T > >::type
 
template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using set_member_function_qualifiers = typename set_member_function_qualifiers_t< Flags, IsTransactionSafe, IsNoexcept, Ts... >::type
 
template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using set_varargs_member_function_qualifiers = typename set_varargs_member_function_qualifiers_t< Flags, IsTransactionSafe, IsNoexcept, Ts... >::type
 
template<std::size_t... I>
using make_index_sequence = typename make_index_sequence_t< I... >::type
 
using qualifier_flags = std::uint32_t
 
template<qualifier_flags Flags>
using remove_const_flag = std::integral_constant< qualifier_flags, Flags &~const_ >
 
template<qualifier_flags Flags>
using is_const = std::integral_constant< bool,(Flags &const_) !=0 >
 
template<qualifier_flags Flags>
using remove_volatile_flag = std::integral_constant< qualifier_flags, Flags &~volatile_ >
 
template<typename U , typename T = typename std::remove_reference<U>::type>
using cv_of = std::integral_constant< qualifier_flags,(std::is_const< T >::value ? const_ :default_)|(std::is_volatile< T >::value ? volatile_ :default_)>
 
template<typename T >
using ref_of = std::integral_constant< qualifier_flags, std::is_rvalue_reference< T >::value ? rref_ :(std::is_lvalue_reference< T >::value ? lref_ :default_)>
 
template<qualifier_flags Existing, qualifier_flags Other, bool AlreadyHasRef = (Existing & (lref_ | rref_)) != 0, bool AlreadyHasLRef = (Existing & lref_) == lref_, bool IsAddingLRef = (Other & lref_) == lref_>
using collapse_flags = std::integral_constant< qualifier_flags, !AlreadyHasRef ?(Existing|Other) :(AlreadyHasLRef ?(Existing|(Other &~rref_)) :(IsAddingLRef ?((Existing &~rref_)|Other) :(Existing|Other)))>
 
template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using set_function_qualifiers = typename set_function_qualifiers_t< Flags, IsTransactionSafe, IsNoexcept, Ts... >::type
 
template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using set_varargs_function_qualifiers = typename set_varargs_function_qualifiers_t< Flags, IsTransactionSafe, IsNoexcept, Ts... >::type
 
template<typename T , typename... FailIfs>
using sfinae_try = typename BOOST_CLBL_TRTS_DISJUNCTION(FailIfs..., success< T >)::_::type
 
template<typename T >
using traits = typename BOOST_CLBL_TRTS_DISJUNCTION(function_object< unwrap_reference< T > >, function< T >, pmf< T >, pmd< T >, default_callable_traits< T >)::traits
 
template<typename T >
using error_type = typename std::conditional< std::is_reference< T >::value, reference_error, invalid_type >::type
 
template<bool Value>
using bool_type = std::integral_constant< bool, Value >
 
template<std::size_t I, typename Tup >
using at = typename std::tuple_element< I, Tup >::type
 
template<typename T , typename Class >
using add_member_pointer = T Class::*
 
template<typename L , typename R , typename ErrorType >
using fail_when_same = fail_if< std::is_same< L, R >::value, ErrorType >
 
template<typename T , typename ErrorType , typename U = typename std::remove_reference<T>::type>
using try_but_fail_if_invalid = sfinae_try< T, fail_when_same< U, invalid_type, ErrorType >, fail_when_same< U, reference_error, reference_type_not_supported_by_this_metafunction > >
 
template<typename T , typename ErrorType , typename U = typename std::remove_reference<T>::type, bool is_reference_error = std::is_same<reference_error, U>::value>
using fail_if_invalid = fail_if< std::is_same< U, invalid_type >::value||is_reference_error, typename std::conditional< is_reference_error, reference_type_not_supported_by_this_metafunction, ErrorType >::type >
 
template<typename T , typename Fallback >
using fallback_if_invalid = typename std::conditional< std::is_same< T, invalid_type >::value, Fallback, T >::type
 
template<typename T >
using shallow_decay = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<typename T >
using is_reference_wrapper = typename is_reference_wrapper_t< shallow_decay< T > >::type
 
template<typename T >
using unwrap_reference = typename unwrap_reference_t< T >::type
 

Functions

 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (const)
 
BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS & BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (&&);BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS(const &
 
 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (const &&)
 
 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (volatile &)
 
 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (volatile &&)
 
 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (const volatile &)
 
 BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS (const volatile &&)
 

Variables

constexpr qualifier_flags default_ = 0
 
constexpr qualifier_flags const_ = 1
 
constexpr qualifier_flags volatile_ = 2
 
constexpr qualifier_flags lref_ = 4
 
constexpr qualifier_flags rref_ = 8
 
constexpr qualifier_flags cv_ = 3
 

Typedef Documentation

◆ add_member_pointer

template<typename T , typename Class >
using boost::callable_traits::detail::add_member_pointer = typedef T Class::*

Definition at line 48 of file utility.hpp.

◆ at

template<std::size_t I, typename Tup >
using boost::callable_traits::detail::at = typedef typename std::tuple_element<I, Tup>::type

Definition at line 45 of file utility.hpp.

◆ bool_type

template<bool Value>
using boost::callable_traits::detail::bool_type = typedef std::integral_constant<bool, Value>

Definition at line 41 of file utility.hpp.

◆ can_dereference

template<typename T >
using boost::callable_traits::detail::can_dereference = typedef std::integral_constant<bool, can_dereference_t<T>::value>

Definition at line 41 of file is_invocable_impl.hpp.

◆ collapse_flags

template<qualifier_flags Existing, qualifier_flags Other, bool AlreadyHasRef = (Existing & (lref_ | rref_)) != 0, bool AlreadyHasLRef = (Existing & lref_) == lref_, bool IsAddingLRef = (Other & lref_) == lref_>
using boost::callable_traits::detail::collapse_flags = typedef std::integral_constant<qualifier_flags, !AlreadyHasRef ? (Existing | Other) : (AlreadyHasLRef ? (Existing | (Other & ~rref_)) : (IsAddingLRef ? ((Existing & ~rref_) | Other ) : (Existing | Other)))>

Definition at line 102 of file qualifier_flags.hpp.

◆ cv_of

template<typename U , typename T = typename std::remove_reference<U>::type>
using boost::callable_traits::detail::cv_of = typedef std::integral_constant<qualifier_flags, (std::is_const<T>::value ? const_ : default_) | (std::is_volatile<T>::value ? volatile_ : default_)>

Definition at line 85 of file qualifier_flags.hpp.

◆ default_to_function_object

template<typename T >
using boost::callable_traits::detail::default_to_function_object = typedef typename std::conditional< has_normal_call_operator<T>::value, T, callable_dummy>::type

Definition at line 33 of file forward_declarations.hpp.

◆ error_type

template<typename T >
using boost::callable_traits::detail::error_type = typedef typename std::conditional< std::is_reference<T>::value, reference_error, invalid_type>::type

Definition at line 27 of file utility.hpp.

◆ fail_if_invalid

template<typename T , typename ErrorType , typename U = typename std::remove_reference<T>::type, bool is_reference_error = std::is_same<reference_error, U>::value>
using boost::callable_traits::detail::fail_if_invalid = typedef fail_if< std::is_same<U, invalid_type>::value || is_reference_error, typename std::conditional<is_reference_error, reference_type_not_supported_by_this_metafunction, ErrorType>::type>

Definition at line 63 of file utility.hpp.

◆ fail_when_same

template<typename L , typename R , typename ErrorType >
using boost::callable_traits::detail::fail_when_same = typedef fail_if<std::is_same<L, R>::value, ErrorType>

Definition at line 51 of file utility.hpp.

◆ fallback_if_invalid

template<typename T , typename Fallback >
using boost::callable_traits::detail::fallback_if_invalid = typedef typename std::conditional< std::is_same<T, invalid_type>::value, Fallback, T>::type

Definition at line 69 of file utility.hpp.

◆ function_object_base

template<typename F , typename T = typename std::remove_reference<F>::type>
using boost::callable_traits::detail::function_object_base = typedef typename std::conditional< has_normal_call_operator<T>::value, pmf<decltype(&default_to_function_object<T>::operator())>, default_callable_traits<T> >::type

Definition at line 44 of file forward_declarations.hpp.

◆ generalize

template<typename T >
using boost::callable_traits::detail::generalize = typedef typename generalize_t<T>::type

Definition at line 66 of file is_invocable_impl.hpp.

◆ generalize_if_dissimilar

template<typename Base , typename T , typename IsBaseOf = std::is_base_of<Base, shallow_decay<T>>, typename IsSame = std::is_same<Base, shallow_decay<T>>>
using boost::callable_traits::detail::generalize_if_dissimilar = typedef typename std::conditional< IsBaseOf::value || IsSame::value, T, generalize<T> >::type

Definition at line 72 of file is_invocable_impl.hpp.

◆ is_const

template<qualifier_flags Flags>
using boost::callable_traits::detail::is_const = typedef std::integral_constant<bool, (Flags & const_) != 0>

Definition at line 77 of file qualifier_flags.hpp.

◆ is_reference_wrapper

template<typename T >
using boost::callable_traits::detail::is_reference_wrapper = typedef typename is_reference_wrapper_t<shallow_decay<T> >::type

Definition at line 92 of file utility.hpp.

◆ make_index_sequence

template<std::size_t... I>
using boost::callable_traits::detail::make_index_sequence = typedef typename make_index_sequence_t<I...>::type

Definition at line 46 of file make_index_sequence.hpp.

◆ make_member_pointer_t

template<typename T , typename C >
using boost::callable_traits::detail::make_member_pointer_t = typedef typename make_member_pointer<T, C>::type

Definition at line 41 of file apply_member_pointer.hpp.

◆ qualifier_flags

using boost::callable_traits::detail::qualifier_flags = typedef std::uint32_t

Definition at line 18 of file qualifier_flags.hpp.

◆ ref_of

template<typename T >
using boost::callable_traits::detail::ref_of = typedef std::integral_constant<qualifier_flags, std::is_rvalue_reference<T>::value ? rref_ : (std::is_lvalue_reference<T>::value ? lref_ : default_)>

Definition at line 90 of file qualifier_flags.hpp.

◆ remove_const_flag

template<qualifier_flags Flags>
using boost::callable_traits::detail::remove_const_flag = typedef std::integral_constant< qualifier_flags, Flags & ~const_>

Definition at line 73 of file qualifier_flags.hpp.

◆ remove_volatile_flag

template<qualifier_flags Flags>
using boost::callable_traits::detail::remove_volatile_flag = typedef std::integral_constant< qualifier_flags, Flags & ~volatile_>

Definition at line 81 of file qualifier_flags.hpp.

◆ set_function_qualifiers

template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using boost::callable_traits::detail::set_function_qualifiers = typedef typename set_function_qualifiers_t<Flags, IsTransactionSafe, IsNoexcept, Ts...>::type

Definition at line 108 of file set_function_qualifiers.hpp.

◆ set_member_function_qualifiers

template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using boost::callable_traits::detail::set_member_function_qualifiers = typedef typename set_member_function_qualifiers_t<Flags, IsTransactionSafe, IsNoexcept, Ts...>::type

Definition at line 32 of file pmf.hpp.

◆ set_varargs_function_qualifiers

template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using boost::callable_traits::detail::set_varargs_function_qualifiers = typedef typename set_varargs_function_qualifiers_t<Flags, IsTransactionSafe, IsNoexcept, Ts...>::type

Definition at line 114 of file set_function_qualifiers.hpp.

◆ set_varargs_member_function_qualifiers

template<qualifier_flags Flags, bool IsTransactionSafe, bool IsNoexcept, typename... Ts>
using boost::callable_traits::detail::set_varargs_member_function_qualifiers = typedef typename set_varargs_member_function_qualifiers_t<Flags, IsTransactionSafe, IsNoexcept, Ts...>::type

Definition at line 38 of file pmf.hpp.

◆ sfinae_try

template<typename T , typename... FailIfs>
using boost::callable_traits::detail::sfinae_try = typedef typename BOOST_CLBL_TRTS_DISJUNCTION( FailIfs..., success<T>)::_::type

Definition at line 33 of file sfinae_errors.hpp.

◆ shallow_decay

template<typename T >
using boost::callable_traits::detail::shallow_decay = typedef typename std::remove_cv< typename std::remove_reference<T>::type>::type

Definition at line 78 of file utility.hpp.

◆ traits

Definition at line 19 of file traits.hpp.

◆ try_but_fail_if_invalid

template<typename T , typename ErrorType , typename U = typename std::remove_reference<T>::type>
using boost::callable_traits::detail::try_but_fail_if_invalid = typedef sfinae_try<T, fail_when_same<U, invalid_type, ErrorType>, fail_when_same<U, reference_error, reference_type_not_supported_by_this_metafunction> >

Definition at line 55 of file utility.hpp.

◆ unwrap_reference

template<typename T >
using boost::callable_traits::detail::unwrap_reference = typedef typename unwrap_reference_t<T>::type

Definition at line 107 of file utility.hpp.

Function Documentation

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [1/7]

BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS& boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( &&  ) const &

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [2/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( const &&  )

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [3/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( const volatile &&  )

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [4/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( const volatile &  )

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [5/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( const  )

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [6/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( volatile &&  )

◆ BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS() [7/7]

boost::callable_traits::detail::BOOST_CLBL_TRTS_SET_FUNCTION_QUALIFIERS ( volatile &  )

Variable Documentation

◆ const_

constexpr qualifier_flags boost::callable_traits::detail::const_ = 1
constexpr

Definition at line 46 of file qualifier_flags.hpp.

◆ cv_

constexpr qualifier_flags boost::callable_traits::detail::cv_ = 3
constexpr

Definition at line 70 of file qualifier_flags.hpp.

◆ default_

constexpr qualifier_flags boost::callable_traits::detail::default_ = 0
constexpr

Definition at line 42 of file qualifier_flags.hpp.

◆ lref_

constexpr qualifier_flags boost::callable_traits::detail::lref_ = 4
constexpr

Definition at line 61 of file qualifier_flags.hpp.

◆ rref_

constexpr qualifier_flags boost::callable_traits::detail::rref_ = 8
constexpr

Definition at line 66 of file qualifier_flags.hpp.

◆ volatile_

constexpr qualifier_flags boost::callable_traits::detail::volatile_ = 2
constexpr

Definition at line 50 of file qualifier_flags.hpp.