### query

A customisation point that queries the value of a property.

    constexpr unspecified query = unspecified;

The name `query` denotes a customization point object. The expression `asio::query(E, P)` for some subexpressions `E` and `P` (with types `T = decay_t<decltype(E)>` and `Prop = decay_t<decltype(P)>`) is expression-equivalent to:

- If `is_applicable_property_v<T, Prop>` is not a well-formed constant expression with value `true`, `asio::query(E, P)` is ill-formed.
- Otherwise, `Prop::template static_query_v<T>` if the expression `Prop::template static_query_v<T>` is a well-formed constant expression.
- Otherwise, `(E).query(P)` if the expression `(E).query(P)` is well-formed.
- Otherwise, `query(E, P)` if the expression `query(E, P)` is a valid expression with overload resolution performed in a context that does not include the declaration of the `query` customization point object.
- Otherwise, `asio::query(E, P)` is ill-formed.

##### Requirements

Header: `asio/query.hpp`

Convenience header: `asio.hpp`