⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bases.cpp

📁 boost库提供标准的C++ API 配合dev c++使用,功能更加强大
💻 CPP
字号:
// Copyright David Abrahams 2002. Permission to copy, use,
// modify, sell and distribute this software is granted provided this
// copyright notice appears in all copies. This software is provided
// "as is" without express or implied warranty, and with no claim as
// to its suitability for any purpose.
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -