// 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 #define BOOST_TEST_MAIN #include using namespace boost::type_erasure; template struct common : ::boost::mpl::vector< destructible, copy_constructible, typeid_ > {}; BOOST_AUTO_TEST_CASE(test_value) { typedef ::boost::mpl::vector, incrementable<> > test_concept; any x(1); ++x; BOOST_CHECK_EQUAL(any_cast(x), 2); any y(x++); BOOST_CHECK_EQUAL(any_cast(x), 3); BOOST_CHECK_EQUAL(any_cast(y), 2); } BOOST_AUTO_TEST_CASE(test_reference) { typedef ::boost::mpl::vector, incrementable<> > test_concept; int i = 1; any x(i); ++x; BOOST_CHECK_EQUAL(i, 2); any y(x++); BOOST_CHECK_EQUAL(i, 3); BOOST_CHECK_EQUAL(any_cast(y), 2); }