// Boost.Range library // // Copyright Neil Groves 2014. Use, modification and // distribution is subject to the Boost Software License, Version // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // For more information, see http://www.boost.org/libs/range/ // #include #include #include #include #include #include #include #include #include namespace { enum E { e1, e2, e3 }; void test_variant_report() { typedef boost::mpl::vector< E, std::string, boost::iterator_range >::type args; typedef boost::make_variant_over::type variant_t; variant_t v; std::string s; v = boost::iterator_range(s.begin(), s.end()); v = e2; v = std::string(); // Rationale: // This is cast to const char* to guard against ambiguity in the case // where std::string::iterator it a char* v = static_cast(""); } } boost::unit_test::test_suite* init_unit_test_suite( int argc, char* argv[] ) { boost::unit_test::test_suite* test = BOOST_TEST_SUITE("iterator range and variant interoperability"); test->add(BOOST_TEST_CASE(&test_variant_report)); return test; }