bases.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 63 行

CPP
63
字号
// 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 <boost/python/bases.hpp>#include <boost/static_assert.hpp>#include <boost/type_traits/same_traits.hpp>struct A;struct B;template <class X, class Y, class Z>struct choose_bases    : boost::python::detail::select_bases<    X    , typename boost::python::detail::select_bases<        Y        , typename boost::python::detail::select_bases<Z>::type    >::type>{    };int main(){    BOOST_STATIC_ASSERT((boost::python::detail::specifies_bases<                         boost::python::bases<A,B> >::value));    BOOST_STATIC_ASSERT((!boost::python::detail::specifies_bases<                         boost::python::bases<A,B>& >::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<char*>::type > collected1;    BOOST_STATIC_ASSERT((boost::is_same<collected1::type,boost::python::bases<> >::value));    BOOST_STATIC_ASSERT((boost::is_same<choose_bases<int,char*,long>::type,boost::python::bases<> >::value));        typedef boost::python::detail::select_bases<        int        , boost::python::detail::select_bases<                boost::python::bases<A,B>                , boost::python::detail::select_bases<                        A            >::type         >::type     > collected2;    BOOST_STATIC_ASSERT((boost::is_same<collected2::type,boost::python::bases<A,B> >::value));    BOOST_STATIC_ASSERT((boost::is_same<choose_bases<int,boost::python::bases<A,B>,long>::type,boost::python::bases<A,B> >::value));        return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?