35template<
typename Return,
typename... Args>
36struct function<Return(Args...)
40 : default_callable_traits<dummy BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS> {
42 static constexpr bool value =
true;
51 using type = Return(Args...)
94 template<qualifier_flags Flags>
98 #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
102 using add_member_const = abominable_functions_not_supported_on_this_compiler;
104 using add_member_cv = abominable_functions_not_supported_on_this_compiler;
109 collapse_flags<qualifiers::q_flags, lref_>::value>;
112 collapse_flags<qualifiers::q_flags, rref_>::value>;
125 qualifiers::ref_flags | remove_const_flag<qualifiers::cv_flags>::value>;
128 qualifiers::ref_flags | remove_volatile_flag<qualifiers::cv_flags>::value>;
135 template<
typename NewReturn>
141 template<template<class...> class Container>
148template<typename Return, typename... Args>
149struct function<Return (Args..., ...)
155 static constexpr bool value =
true;
162 using type = Return (Args..., ...)
205 template<qualifier_flags Flags>
209 #ifdef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
213 using add_member_const = abominable_functions_not_supported_on_this_compiler;
215 using add_member_cv = abominable_functions_not_supported_on_this_compiler;
220 collapse_flags<qualifiers::q_flags, lref_>::value>;
223 collapse_flags<qualifiers::q_flags, rref_>::value>;
236 qualifiers::ref_flags | remove_const_flag<qualifiers::cv_flags>::value>;
239 qualifiers::ref_flags | remove_volatile_flag<qualifiers::cv_flags>::value>;
250 template<
typename NewReturn>
256 template<template<class...> class Container>
#define BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
#define BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER
#define BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER
#define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
#define BOOST_CLBL_TRTS_IS_NOEXCEPT
#define BOOST_CLBL_TRTS_NOEXCEPT_SPEC
set_qualifiers< qualifiers::ref_flags > remove_member_cv
Return(Args...,...) function_type
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE remove_noexcept
set_qualifiers< qualifiers::q_flags|volatile_ > add_member_volatile
set_varargs_function_qualifiers< Flags, is_transaction_safe::value, is_noexcept::value, Return, Args... > set_qualifiers
set_qualifiers< qualifiers::q_flags|const_ > add_member_const
set_qualifiers< qualifiers::q_flags|cv_ > add_member_cv
Container< Args... > expand_args
std::tuple< Args... > arg_types
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER BOOST_CLBL_TRTS_NOEXCEPT_SPEC add_transaction_safe
set_qualifiers< collapse_flags< qualifiers::q_flags, rref_ >::value > add_member_rvalue_reference
BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE is_transaction_safe
std::true_type has_varargs
Return(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC U::*)(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC apply_member_pointer
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_NOEXCEPT_SPEC remove_transaction_safe
default_callable_traits< dummy BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS > qualifiers
set_qualifiers< qualifiers::ref_flags|remove_volatile_flag< qualifiers::cv_flags >::value > remove_member_volatile
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC remove_varargs
set_qualifiers< collapse_flags< qualifiers::q_flags, lref_ >::value > add_member_lvalue_reference
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER add_noexcept
set_qualifiers< qualifiers::ref_flags|remove_const_flag< qualifiers::cv_flags >::value > remove_member_const
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC qualified_function_type
BOOST_CLBL_TRTS_IS_NOEXCEPT is_noexcept
set_qualifiers< qualifiers::cv_flags > remove_member_reference
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC type
std::false_type is_member_pointer
NewReturn(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC apply_return
Container< Args... > expand_args
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_NOEXCEPT_SPEC remove_transaction_safe
arg_types non_invoke_arg_types
Return(Args...) function_type
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPECIFIER add_noexcept
set_qualifiers< qualifiers::ref_flags > remove_member_cv
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC qualified_function_type
set_qualifiers< qualifiers::q_flags|const_ > add_member_const
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE remove_noexcept
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_TRANSACTION_SAFE_SPECIFIER BOOST_CLBL_TRTS_NOEXCEPT_SPEC add_transaction_safe
set_qualifiers< qualifiers::q_flags|volatile_ > add_member_volatile
add_member_pointer< type, U > apply_member_pointer
std::false_type is_member_pointer
BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE is_transaction_safe
NewReturn(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC apply_return
default_callable_traits< dummy BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS > qualifiers
set_qualifiers< qualifiers::q_flags|cv_ > add_member_cv
set_qualifiers< collapse_flags< qualifiers::q_flags, rref_ >::value > add_member_rvalue_reference
std::tuple< Args... > arg_types
set_qualifiers< qualifiers::ref_flags|remove_volatile_flag< qualifiers::cv_flags >::value > remove_member_volatile
set_qualifiers< qualifiers::ref_flags|remove_const_flag< qualifiers::cv_flags >::value > remove_member_const
Return(Args...,...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC add_varargs
set_function_qualifiers< Flags, is_transaction_safe::value, is_noexcept::value, Return, Args... > set_qualifiers
Return(Args...) BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE BOOST_CLBL_TRTS_NOEXCEPT_SPEC type
set_qualifiers< collapse_flags< qualifiers::q_flags, lref_ >::value > add_member_lvalue_reference
BOOST_CLBL_TRTS_IS_NOEXCEPT is_noexcept
set_qualifiers< qualifiers::cv_flags > remove_member_reference
#define BOOST_CLBL_TRTS_INCLUDE_TRANSACTION_SAFE
#define BOOST_CLBL_TRTS_IS_TRANSACTION_SAFE