// Copyright David Abrahams 2002. // 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) #include #include #include struct A; struct B; template struct choose_bases : boost::python::detail::select_bases< X , typename boost::python::detail::select_bases< Y , typename boost::python::detail::select_bases::type >::type> { }; int main() { BOOST_STATIC_ASSERT((boost::python::detail::specifies_bases< boost::python::bases >::value)); BOOST_STATIC_ASSERT((!boost::python::detail::specifies_bases< boost::python::bases& >::value)); BOOST_STATIC_ASSERT((!boost::python::detail::specifies_bases< void* >::value)); BOOST_STATIC_ASSERT((!boost::python::detail::specifies_bases< int >::value)); BOOST_STATIC_ASSERT((!boost::python::detail::specifies_bases< int[5] >::value)); typedef boost::python::detail::select_bases< int , boost::python::detail::select_bases::type > collected1; BOOST_STATIC_ASSERT((boost::python::detail::is_same >::value)); BOOST_STATIC_ASSERT((boost::python::detail::is_same::type,boost::python::bases<> >::value)); typedef boost::python::detail::select_bases< int , boost::python::detail::select_bases< boost::python::bases , boost::python::detail::select_bases< A >::type >::type > collected2; BOOST_STATIC_ASSERT((boost::python::detail::is_same >::value)); BOOST_STATIC_ASSERT((boost::python::detail::is_same,long>::type,boost::python::bases >::value)); return 0; }