// 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 using namespace boost::type_erasure; namespace mpl = boost::mpl; template struct common : mpl::vector< copy_constructible > {}; template struct concept1 : mpl::vector > {}; template struct concept2 : mpl::vector > {}; namespace boost { namespace type_erasure { template struct concept_interface, Base, T> : Base { typedef int id_type; }; template struct concept_interface, Base, T> : Base { typedef char id_type; }; } } BOOST_MPL_ASSERT((boost::is_same >::id_type, char>)); BOOST_MPL_ASSERT((boost::is_same, concept1<> > >::id_type, char>)); BOOST_MPL_ASSERT((boost::is_same, concept2<> > >::id_type, char>));