inherit_linearly.cpp

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

CPP
63
字号
// Copyright Aleksey Gurtovoy 2002-2004//// 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)//// See http://www.boost.org/libs/mpl for documentation.// $Id: inherit_linearly.cpp 49268 2008-10-11 06:26:17Z agurtovoy $// $Date: 2008-10-11 02:26:17 -0400 (Sat, 11 Oct 2008) $// $Revision: 49268 $#include <boost/mpl/inherit_linearly.hpp>#include <boost/mpl/int.hpp>#include <boost/mpl/list.hpp>#include <iostream>namespace mpl = boost::mpl;using namespace mpl::placeholders;template< typename Base, typename T >struct tuple_part    : Base{    typedef tuple_part type; // note the typedef    typedef typename Base::index::next index;    friend T& field(tuple_part& t, index) { return t.field_; }    T field_;};struct empty_tuple{    typedef mpl::int_<-1> index;};typedef mpl::inherit_linearly<      mpl::list<int,char const*,bool>    , tuple_part<_,_>    , empty_tuple    >::type my_tuple;    int main(){    my_tuple t;        field(t, mpl::int_<0>()) = -1;    field(t, mpl::int_<1>()) = "text";    field(t, mpl::int_<2>()) = false;    std::cout        << field(t, mpl::int_<0>()) << '\n'        << field(t, mpl::int_<1>()) << '\n'        << field(t, mpl::int_<2>()) << '\n'        ;    return 0;}

⌨️ 快捷键说明

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