123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #ifndef BOOST_CLBL_TRTS_DETAIL_DEFAULT_BOOST_CLBL_TRTS_HPP
- #define BOOST_CLBL_TRTS_DETAIL_DEFAULT_BOOST_CLBL_TRTS_HPP
- namespace boost { namespace callable_traits { namespace detail {
-
- template<typename T = void>
- struct default_callable_traits {
-
-
- static constexpr bool value = false;
-
-
-
- using traits = default_callable_traits;
-
- using error_t = error_type<T>;
-
- using type = error_t;
-
-
- using has_varargs = std::false_type;
-
- using return_type = error_t;
-
-
-
-
-
-
-
- using arg_types = error_t;
-
-
- using non_invoke_arg_types = error_t;
-
-
-
-
- using function_type = error_t;
-
-
- using function_object_signature = error_t;
-
-
-
- using qualified_function_type = error_t;
-
-
-
- using remove_varargs = error_t;
-
-
-
- using add_varargs = error_t;
-
-
-
- using is_noexcept = std::false_type;
-
- using add_noexcept = error_t;
-
- using remove_noexcept = error_t;
-
-
- using is_transaction_safe = std::false_type;
-
- using add_transaction_safe = error_t;
-
- using remove_transaction_safe = error_t;
-
- using class_type = error_t;
-
-
-
- using invoke_type = error_t;
-
-
- using remove_reference = error_t;
-
-
-
- using add_member_lvalue_reference = error_t;
-
-
-
- using add_member_rvalue_reference = error_t;
-
-
- using add_member_const = error_t;
-
-
- using add_member_volatile = error_t;
-
-
- using add_member_cv = error_t;
-
-
- using remove_member_const = error_t;
-
-
- using remove_member_volatile = error_t;
-
-
-
- using remove_member_cv = error_t;
-
-
-
- using remove_member_pointer = error_t;
-
-
-
-
-
- template<typename C,
- typename U = T,
- typename K = typename std::remove_reference<U>::type,
- typename L = typename std::conditional<
- std::is_same<void, K>::value, error_t, K>::type,
- typename Class = typename std::conditional<
- std::is_class<C>::value, C, error_t>::type>
- using apply_member_pointer = typename std::conditional<
- std::is_same<L, error_t>::value || std::is_same<Class, error_t>::value,
- error_t, L Class::*>::type;
-
-
-
-
- template<typename>
- using apply_return = error_t;
-
- template<template<class...> class Container>
- using expand_args = error_t;
- template<template<class...> class Container, typename... RightArgs>
- using expand_args_left = error_t;
- template<template<class...> class Container, typename... LeftArgs>
- using expand_args_right = error_t;
- using clear_args = error_t;
-
- template<typename... NewArgs>
- using push_front = error_t;
- template<typename... NewArgs>
- using push_back = error_t;
-
- template<std::size_t ElementCount>
- using pop_front = error_t;
- template<std::size_t ElementCount>
- using pop_back = error_t;
-
- template<std::size_t Index, typename... NewArgs>
- using insert_args = error_t;
- template<std::size_t Index, std::size_t Count>
- using remove_args = error_t;
- template<std::size_t Index, typename... NewArgs>
- using replace_args = error_t;
- static constexpr qualifier_flags cv_flags = cv_of<T>::value;
- static constexpr qualifier_flags ref_flags = ref_of<T>::value;
- static constexpr qualifier_flags q_flags = cv_flags | ref_flags;
- using has_member_qualifiers = std::integral_constant<bool, q_flags != default_>;
- using is_const_member = std::integral_constant<bool, 0 < (cv_flags & const_)>;
- using is_volatile_member = std::integral_constant<bool, 0 < (cv_flags & volatile_)>;
- using is_cv_member = std::integral_constant<bool, cv_flags == (const_ | volatile_)>;
- #ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
- using is_reference_member = std::false_type;
- using is_lvalue_reference_member = std::false_type;
- using is_rvalue_reference_member = std::false_type;
- #else
- using is_reference_member = std::integral_constant<bool, 0 < ref_flags>;
- using is_lvalue_reference_member = std::integral_constant<bool, ref_flags == lref_>;
- using is_rvalue_reference_member = std::integral_constant<bool, ref_flags == rref_>;
- #endif
- };
- }}}
- #endif
|