// Boost.Convert test and usage example // Copyright (c) 2009-2016 Vladimir Batov. // Use, modification and distribution are subject to the Boost Software License, // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt. #include "./test.hpp" #if defined(BOOST_CONVERT_IS_NOT_SUPPORTED) int main(int, char const* []) { return 0; } #else #include #include #include #include //[has_member_declaration namespace { namespace local { BOOST_DECLARE_HAS_MEMBER(has_begin, begin); BOOST_DECLARE_HAS_MEMBER(has_funop, operator()); }} //] //[has_member_classes_tested namespace { namespace local { struct test01 { int begin; }; struct test02 { char* begin() { return 0; } }; struct test22 { void operator()() {} }; }} //] namespace { namespace local { struct test03 { void begin(int) {} int begin(int, int) { return 0; } }; struct test04 { virtual ~test04() {} private: virtual char* begin() { return 0; } }; struct test05 { virtual char* begin() { return 0; } virtual ~test05() {} }; struct test06 : public test04 {}; struct test07 : private test04 {}; struct test08 : public test05 {}; struct test09 : private test05 {}; struct test11 { int no_begin; }; struct test12 { char* no_begin() { return 0; } }; }} namespace { namespace local { struct test21 { void zoo () {} }; struct test23 { void operator() () const {} }; struct test24 { int operator() (int) { return 0; } }; struct test25 { int operator() (int) const { return 0; } }; struct test26 { int operator() (int) const { return 0; } void operator() () const {} }; }} int main(int, char const* []) { BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin >::value == true); BOOST_TEST(local::has_begin::value == false); BOOST_TEST(local::has_begin::value == false); BOOST_TEST(local::has_begin::value == false); //[has_member_usage BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_begin::value == true); BOOST_TEST(local::has_funop::value == true); //] BOOST_TEST(local::has_funop::value == false); BOOST_TEST(local::has_funop::value == true); BOOST_TEST(local::has_funop::value == true); BOOST_TEST(local::has_funop::value == true); BOOST_TEST(local::has_funop::value == true); BOOST_TEST(local::has_funop::value == true); return boost::report_errors(); } #endif