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 + -
显示快捷键?