// Boost.TypeErasure library // // Copyright 2011 Steven Watanabe // // Distributed under 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) // // $Id$ #include #include #include #include #include #include #include #define BOOST_TEST_MAIN #include using namespace boost::type_erasure; template struct common : ::boost::mpl::vector< copy_constructible, typeid_ > {}; BOOST_AUTO_TEST_CASE(test_val) { typedef common<> test_concept; any x(2); BOOST_CHECK(typeid_of(x) == typeid(int)); const any y(2); BOOST_CHECK(typeid_of(y) == typeid(int)); } BOOST_AUTO_TEST_CASE(test_ref) { typedef common<> test_concept; int i; any x(i); BOOST_CHECK(typeid_of(x) == typeid(int)); const any y(i); BOOST_CHECK(typeid_of(y) == typeid(int)); } BOOST_AUTO_TEST_CASE(test_cref) { typedef common<> test_concept; int i; any x(i); BOOST_CHECK(typeid_of(x) == typeid(int)); const any y(i); BOOST_CHECK(typeid_of(y) == typeid(int)); } BOOST_AUTO_TEST_CASE(test_binding) { typedef boost::mpl::vector, common<_b> > test_concept; binding b = make_binding< boost::mpl::map< boost::mpl::pair<_a, int>, boost::mpl::pair<_b, double> > >(); BOOST_CHECK(typeid_of<_a>(b) == typeid(int)); BOOST_CHECK(typeid_of<_b>(b) == typeid(double)); }