| 192 | { |
| 193 | #if defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) |
| 194 | struct type |
| 195 | { |
| 196 | template <typename P> |
| 197 | auto query(ASIO_MOVE_ARG(P) p) |
| 198 | noexcept( |
| 199 | noexcept( |
| 200 | declval<typename conditional<true, T, P>::type>().query( |
| 201 | ASIO_MOVE_CAST(P)(p)) |
| 202 | ) |
| 203 | ) |
| 204 | -> decltype( |
| 205 | declval<typename conditional<true, T, P>::type>().query( |
| 206 | ASIO_MOVE_CAST(P)(p)) |
| 207 | ); |
| 208 | }; |
| 209 | #else // defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) |
| 210 | typedef T type; |
| 211 | #endif // defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) |