11 #ifndef ASIO_QUERY_HPP 12 #define ASIO_QUERY_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 18 #include "asio/detail/config.hpp" 19 #include "asio/detail/type_traits.hpp" 20 #include "asio/is_applicable_property.hpp" 21 #include "asio/traits/query_member.hpp" 22 #include "asio/traits/query_free.hpp" 23 #include "asio/traits/static_query.hpp" 25 #include "asio/detail/push_options.hpp" 27 #if defined(GENERATING_DOCUMENTATION) 57 inline constexpr unspecified query = unspecified;
65 template <
typename T,
typename Property>
67 integral_constant<bool, automatically_determined>
78 template <
typename T,
typename Property>
79 struct is_nothrow_query :
80 integral_constant<bool, automatically_determined>
90 template <
typename T,
typename Property>
94 typedef automatically_determined type;
99 #else // defined(GENERATING_DOCUMENTATION) 121 template <
typename T,
typename Properties,
typename =
void>
124 ASIO_STATIC_CONSTEXPR(overload_type, overload = ill_formed);
125 ASIO_STATIC_CONSTEXPR(
bool, is_noexcept =
false);
126 typedef void result_type;
129 template <
typename T,
typename Property>
134 typename decay<T>::type,
135 typename decay<Property>::type
143 ASIO_STATIC_CONSTEXPR(overload_type, overload = static_value);
146 template <
typename T,
typename Property>
151 typename decay<T>::type,
152 typename decay<Property>::type
162 ASIO_STATIC_CONSTEXPR(overload_type, overload = call_member);
165 template <
typename T,
typename Property>
170 typename decay<T>::type,
171 typename decay<Property>::type
183 ASIO_STATIC_CONSTEXPR(overload_type, overload = call_free);
188 template <
typename T,
typename Property>
189 ASIO_NODISCARD ASIO_CONSTEXPR
typename enable_if<
191 typename call_traits<T, void(Property)>::result_type
195 ASIO_MOVE_ARG(Property))
const 200 typename decay<T>::type,
201 typename decay<Property>::type
205 template <
typename T,
typename Property>
206 ASIO_NODISCARD ASIO_CONSTEXPR
typename enable_if<
207 call_traits<T, void(Property)>::overload == call_member,
208 typename call_traits<T, void(Property)>::result_type
212 ASIO_MOVE_ARG(Property) p)
const 216 return ASIO_MOVE_CAST(T)(t).query(ASIO_MOVE_CAST(Property)(p));
219 template <
typename T,
typename Property>
220 ASIO_NODISCARD ASIO_CONSTEXPR
typename enable_if<
221 call_traits<T, void(Property)>::overload == call_free,
222 typename call_traits<T, void(Property)>::result_type
226 ASIO_MOVE_ARG(Property) p)
const 230 return query(ASIO_MOVE_CAST(T)(t), ASIO_MOVE_CAST(Property)(p));
234 template <
typename T = impl>
237 static const T instance;
240 template <
typename T>
252 template <
typename T,
typename Property>
254 integral_constant<bool,
255 asio_query_fn::call_traits<T, void(Property)>::overload !=
256 asio_query_fn::ill_formed>
260 #if defined(ASIO_HAS_VARIABLE_TEMPLATES) 262 template <
typename T,
typename Property>
263 constexpr
bool can_query_v
266 #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) 268 template <
typename T,
typename Property>
270 integral_constant<bool,
271 asio_query_fn::call_traits<T, void(Property)>::is_noexcept>
275 #if defined(ASIO_HAS_VARIABLE_TEMPLATES) 277 template <
typename T,
typename Property>
278 constexpr
bool is_nothrow_query_v
281 #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES) 283 template <
typename T,
typename Property>
287 T, void(Property)>::result_type type;
292 #endif // defined(GENERATING_DOCUMENTATION) 294 #include "asio/detail/pop_options.hpp" 296 #endif // ASIO_QUERY_HPP Definition: query.hpp:235
Definition: query.hpp:269
Definition: query.hpp:101
Definition: query_member.hpp:38
Definition: static_query.hpp:42
Definition: query.hpp:284
Definition: type_traits.hpp:97
Definition: query.hpp:253
Definition: query.hpp:122
Definition: query_free.hpp:38
Definition: query.hpp:186
Definition: is_applicable_property.hpp:46
Definition: any_io_executor.hpp:28