1//
2// cpp03/query_free.cpp
3// ~~~~~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#include <boost/asio/query.hpp>
12#include <cassert>
13
14struct prop
15{
16};
17
18struct object
19{
20 friend int query(const object&, prop) { return 123; }
21};
22
23namespace boost {
24namespace asio {
25
26template<>
27struct is_applicable_property<object, prop>
28{
29 static const bool value = true;
30};
31
32namespace traits {
33
34template<>
35struct query_free<object, prop>
36{
37 static const bool is_valid = true;
38 static const bool is_noexcept = true;
39 typedef int result_type;
40};
41
42} // namespace traits
43} // namespace asio
44} // namespace boost
45
46int main()
47{
48 object o1 = {};
49 int result1 = boost::asio::query(o1, prop());
50 assert(result1 == 123);
51 (void)result1;
52
53 const object o2 = {};
54 int result2 = boost::asio::query(o2, prop());
55 assert(result2 == 123);
56 (void)result2;
57}
58

source code of boost/libs/asio/test/properties/cpp03/query_free.cpp