1 // 2 // cpp11/query_member.cpp 3 // ~~~~~~~~~~~~~~~~~~~~~~ 4 // 5 // Copyright (c) 2003-2021 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 14 struct prop 15 { 16 }; 17 18 struct object 19 { queryobject20 constexpr int query(prop) const { return 123; } 21 }; 22 23 namespace boost { 24 namespace asio { 25 26 template<> 27 struct is_applicable_property<object, prop> 28 { 29 static constexpr bool value = true; 30 }; 31 32 } // namespace asio 33 } // namespace boost 34 main()35int main() 36 { 37 object o1 = {}; 38 int result1 = boost::asio::query(o1, prop()); 39 assert(result1 == 123); 40 (void)result1; 41 42 const object o2 = {}; 43 int result2 = boost::asio::query(o2, prop()); 44 assert(result2 == 123); 45 (void)result2; 46 47 constexpr object o3 = {}; 48 constexpr int result3 = boost::asio::query(o3, prop()); 49 assert(result3 == 123); 50 (void)result3; 51 } 52