1 // 2 // cpp03/can_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 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 const bool value = true; 30 }; 31 32 namespace traits { 33 34 template<> 35 struct query_member<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 main()46int main() 47 { 48 assert((boost::asio::can_query<object, prop>::value)); 49 assert((boost::asio::can_query<const object, prop>::value)); 50 } 51