1 // 2 // cpp03/can_query_static.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 { 20 }; 21 22 namespace boost { 23 namespace asio { 24 25 template<> 26 struct is_applicable_property<object, prop> 27 { 28 static const bool value = true; 29 }; 30 31 namespace traits { 32 33 template<> 34 struct static_query<object, prop> 35 { 36 static const bool is_valid = true; 37 static const bool is_noexcept = true; 38 typedef int result_type; valueboost::asio::traits::static_query39 static int value() { return 123; } 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