1 // 2 // cpp03/prefer_unsupported.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/prefer.hpp> 12 #include <cassert> 13 14 template <int> 15 struct prop 16 { 17 static const bool is_preferable = true; 18 }; 19 20 template <int> 21 struct object 22 { 23 }; 24 25 namespace boost { 26 namespace asio { 27 28 template<int N, int M> 29 struct is_applicable_property<object<N>, prop<M> > 30 { 31 static const bool value = true; 32 }; 33 34 } // namespace asio 35 } // namespace boost 36 main()37int main() 38 { 39 object<1> o1 = {}; 40 const object<1>& o2 = boost::asio::prefer(o1, prop<1>()); 41 assert(&o1 == &o2); 42 (void)o2; 43 44 const object<1> o3 = {}; 45 const object<1>& o4 = boost::asio::prefer(o3, prop<1>()); 46 assert(&o3 == &o4); 47 (void)o4; 48 } 49