9#ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP
10#define BOOST_CLBL_TRTS_DETAIL_FUNCTION_OBJECT_HPP
17namespace boost {
namespace callable_traits {
namespace detail {
19template<
typename T,
typename Base>
25 using arg_types =
typename Base::non_invoke_arg_types;
28 static constexpr const bool value = std::is_class<
29 typename std::remove_reference<T>::type>
::value;
44 template<
template<
class...>
class Container>
48 template<
template<
class...>
class Container,
typename... RightArgs>
52 template<
template<
class...>
class Container,
typename... LeftArgs>
56 template<
typename C,
typename U = T>
58 typename std::remove_reference<U>::type C::*;
69 template<std::
size_t ElementCount>
72 template<std::
size_t ElementCount>
75 template<std::size_t Index,
typename... NewArgs>
78 template<std::
size_t Index, std::
size_t Count>
81 template<std::size_t Index,
typename... NewArgs>
84 template<std::
size_t Count>
87 template<std::
size_t Count>
101template<
typename T,
typename U,
typename Base>
typename std::conditional< std::is_reference< T >::value, reference_error, invalid_type >::type error_type
error_t remove_member_const
typename Base::is_noexcept is_noexcept
error_t remove_member_volatile
typename function< function_type >::template expand_args< Container > expand_args
error_t add_member_volatile
error_t add_member_lvalue_reference
typename Base::function_object_signature function_type
typename Base::non_invoke_arg_types arg_types
arg_types non_invoke_arg_types
error_t add_transaction_safe
static constexpr const bool value
error_t remove_member_reference
typename function< function_type >::template expand_args_left< Container, RightArgs... > expand_args_left
error_t add_member_rvalue_reference
typename Base::is_transaction_safe is_transaction_safe
typename function< function_type >::template expand_args_right< Container, LeftArgs... > expand_args_right
typename std::remove_reference< U >::type C::* apply_member_pointer
error_t remove_transaction_safe