// 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<:type> >::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<:type> >::value));
BOOST_STATIC_ASSERT((boost::python::detail::is_same,long>::type,boost::python::bases >::value));
return 0;
}