]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/convert/test/is_converter.cpp
f528a33c53f93da8d81321a3d6c6c347c22c411b
1 // Boost.Convert test and usage example
2 // Copyright (c) 2009-2016 Vladimir Batov.
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
8 #if defined(BOOST_CONVERT_IS_NOT_SUPPORTED)
9 int main(int, char const* []) { return 0; }
12 #include <boost/convert.hpp>
13 #include <boost/convert/detail/is_converter.hpp>
14 #include <boost/detail/lightweight_test.hpp>
19 namespace { namespace local
21 typedef void not_converter01 (string
const&);
22 typedef void not_converter02 (int const&, string
const&);
23 typedef void not_converter03 ();
24 typedef void converter01 (int const&, boost::optional
<string
>&);
25 typedef void converter02 (double const&, boost::optional
<string
>&);
29 void operator()(int const&, boost::optional
<string
>&) {}
30 void operator()(double const&, boost::optional
<string
>&) {}
31 void operator()(string
const&, boost::optional
<int>&) {}
35 template<typename TypeIn
, typename TypeOut
> void operator()(TypeIn
const&, boost::optional
<TypeOut
>&) {}
39 void operator()(int const&, boost::optional
<string
>&) {}
43 void operator()(int const&, boost::optional
<string
>&) const {}
45 struct not_converter11
48 struct not_converter12
52 struct not_converter13
54 void operator()(int const&, string
const&) {}
59 main(int, char const* [])
61 BOOST_TEST( (boost::cnv::is_cnv
<local::converter01
, int, string
>::value
));
62 BOOST_TEST( (boost::cnv::is_cnv
<local::converter01
, double, string
>::value
));
63 BOOST_TEST( (boost::cnv::is_cnv
<local::converter01
, short int, string
>::value
));
64 BOOST_TEST( (boost::cnv::is_cnv
<local::converter11
, int, string
>::value
));
65 BOOST_TEST( (boost::cnv::is_cnv
<local::converter11
, double, string
>::value
));
66 BOOST_TEST( (boost::cnv::is_cnv
<local::converter11
, string
, int>::value
));
67 BOOST_TEST( (boost::cnv::is_cnv
<local::converter12
, int, string
>::value
));
68 BOOST_TEST( (boost::cnv::is_cnv
<local::converter12
, double, string
>::value
));
69 BOOST_TEST( (boost::cnv::is_cnv
<local::converter12
, string
, int>::value
));
70 BOOST_TEST( (boost::cnv::is_cnv
<local::converter13
, int, string
>::value
));
71 BOOST_TEST( (boost::cnv::is_cnv
<local::converter13
, double, string
>::value
));
72 BOOST_TEST( (boost::cnv::is_cnv
<local::converter13
, int, string
>::value
));
73 BOOST_TEST( (boost::cnv::is_cnv
<local::converter14
, int, string
>::value
));
74 BOOST_TEST(!(boost::cnv::is_cnv
<local::converter13
, string
, int>::value
));
75 BOOST_TEST(!(boost::cnv::is_cnv
<local::converter14
, string
, int>::value
));
77 BOOST_TEST(!(boost::cnv::is_cnv
<local::not_converter01
, int, string
>::value
));
78 BOOST_TEST(!(boost::cnv::is_cnv
<local::not_converter02
, int, string
>::value
));
79 BOOST_TEST(!(boost::cnv::is_cnv
<local::not_converter11
, int, string
>::value
));
80 BOOST_TEST(!(boost::cnv::is_cnv
<local::not_converter12
, int, string
>::value
));
81 BOOST_TEST(!(boost::cnv::is_cnv
<local::not_converter13
, int, string
>::value
));
83 return boost::report_errors();