#line 1557 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" #include #include #include #include using namespace boost::parameter; using boost::mpl::_; namespace boost { namespace python { BOOST_PARAMETER_TEMPLATE_KEYWORD(class_type) BOOST_PARAMETER_TEMPLATE_KEYWORD(base_list) BOOST_PARAMETER_TEMPLATE_KEYWORD(held_type) BOOST_PARAMETER_TEMPLATE_KEYWORD(copyable) }} #line 1546 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" namespace boost { namespace python { namespace detail { struct bases_base {}; } template struct bases : detail::bases_base {}; }} #line 1600 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" #include namespace boost { namespace python { #line 1578 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" typedef parameter::parameters< required > , parameter::optional< deduced , is_base_and_derived > , parameter::optional< deduced , mpl::not_< mpl::or_< is_base_and_derived , is_same > > > , parameter::optional, is_same > > class_signature; #line 1604 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" template < class A0 , class A1 = parameter::void_ , class A2 = parameter::void_ , class A3 = parameter::void_ > struct class_ { // Create ArgumentPack typedef typename class_signature::bind::type args; // Extract first logical parameter. typedef typename parameter::value_type< args, tag::class_type>::type class_type; typedef typename parameter::value_type< args, tag::base_list, bases<> >::type base_list; typedef typename parameter::value_type< args, tag::held_type, class_type>::type held_type; typedef typename parameter::value_type< args, tag::copyable, void>::type copyable; }; }} #line 1644 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" struct B {}; struct D {}; using boost::python::bases; #line 1640 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" typedef boost::python::class_ c1; typedef boost::python::class_, bases > c2; #line 1650 "/home/daniel/dev/boost/trunk/libs/parameter/doc/index.rst" BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT((boost::is_same >)); BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT(( boost::is_same )); BOOST_MPL_ASSERT((boost::is_same)); BOOST_MPL_ASSERT((boost::is_same >)); BOOST_MPL_ASSERT(( boost::is_same > )); BOOST_MPL_ASSERT((boost::is_same));