9 #ifndef BOOST_CLBL_TRTS_DETAIL_FUNCTION_HPP
10 #define BOOST_CLBL_TRTS_DETAIL_FUNCTION_HPP
18 namespace boost {
namespace callable_traits {
namespace detail {
23 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
24 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
26 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
28 #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
30 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const
32 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
34 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile
36 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
38 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile
40 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
42 #ifndef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
44 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS &
46 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
48 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS &&
50 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
52 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const &
54 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
56 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const &&
58 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
60 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile &
62 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
64 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS volatile &&
66 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
68 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile &
70 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
72 #define BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS const volatile &&
74 #undef BOOST_CLBL_TRTS_INCLUDE_QUALIFIERS
81 #define BOOST_CLBL_TRTS_CC_TAG dummy
82 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
83 #define BOOST_CLBL_TRTS_CC
84 #define BOOST_CLBL_TRTS_ST
87 #undef BOOST_CLBL_TRTS_ST
88 #undef BOOST_CLBL_TRTS_CC
89 #undef BOOST_CLBL_TRTS_CC_TAG
90 #undef BOOST_CLBL_TRTS_VARARGS_CC
105 #ifdef BOOST_CLBL_TRTS_ENABLE_STDCALL
106 #define BOOST_CLBL_TRTS_CC_TAG stdcall_tag
107 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
108 #define BOOST_CLBL_TRTS_CC __stdcall
109 #define BOOST_CLBL_TRTS_ST
111 #undef BOOST_CLBL_TRTS_ST
112 #undef BOOST_CLBL_TRTS_CC
113 #undef BOOST_CLBL_TRTS_CC_TAG
114 #undef BOOST_CLBL_TRTS_VARARGS_CC
117 #ifdef BOOST_CLBL_TRTS_ENABLE_FASTCALL
118 #define BOOST_CLBL_TRTS_CC_TAG fastcall_tag
119 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
120 #define BOOST_CLBL_TRTS_CC __fastcall
121 #define BOOST_CLBL_TRTS_ST
123 #undef BOOST_CLBL_TRTS_CC
124 #undef BOOST_CLBL_TRTS_ST
125 #undef BOOST_CLBL_TRTS_CC_TAG
126 #undef BOOST_CLBL_TRTS_VARARGS_CC
129 #ifdef BOOST_CLBL_TRTS_ENABLE_PASCAL
130 #define BOOST_CLBL_TRTS_CC_TAG pascal_tag
131 #define BOOST_CLBL_TRTS_VARARGS_CC BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC
132 #define BOOST_CLBL_TRTS_CC
133 #define BOOST_CLBL_TRTS_ST pascal
135 #undef BOOST_CLBL_TRTS_CC
136 #undef BOOST_CLBL_TRTS_ST
137 #undef BOOST_CLBL_TRTS_CC_TAG
138 #undef BOOST_CLBL_TRTS_VARARGS_CC
142 struct function<T&> : std::conditional<function<T>::value,
145 static constexpr
const bool value = !std::is_pointer<T>::value;
163 template<
typename NewReturn>
168 template<
typename... NewArgs>
171 template<
typename... NewArgs>
174 template<std::
size_t Count>
177 template<std::
size_t Count>
180 template<std::size_t Index,
typename... NewArgs>
183 template<std::
size_t Index, std::
size_t Count>
186 template<std::size_t Index,
typename... NewArgs>
typename base::add_varargs & add_varargs
typename base::template push_front< NewArgs... > & push_front
typename base::template replace_args< Index, NewArgs... > & replace_args
typename base::template push_back< NewArgs... > & push_back
typename base::template pop_front< Count > & pop_front
typename base::template apply_return< NewReturn > & apply_return
typename base::remove_varargs & remove_varargs
typename base::template pop_back< Count > & pop_back
typename base::clear_args & clear_args
typename base::template remove_args< Index, Count > & remove_args
typename base::template insert_args< Index, NewArgs... > & insert_args