tuple.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 89 行

HPP
89
字号
/*=============================================================================    Copyright (c) 2005 Joel de Guzman    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)==============================================================================*/#if !defined(FUSION_TUPLE_10032005_0810)#define FUSION_TUPLE_10032005_0810#include <boost/fusion/tuple/tuple_fwd.hpp>#include <boost/fusion/container/vector/vector.hpp>#include <boost/fusion/sequence/intrinsic/size.hpp>#include <boost/fusion/sequence/intrinsic/value_at.hpp>#include <boost/fusion/sequence/intrinsic/at.hpp>#include <boost/fusion/sequence/comparison.hpp>#include <boost/fusion/sequence/io.hpp>#include <boost/utility/enable_if.hpp>#include <boost/type_traits/is_const.hpp>#include <boost/config/no_tr1/utility.hpp>namespace boost { namespace fusion{    template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>    struct tuple : vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>    {        typedef vector<            BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>        base_type;        tuple()            : base_type() {}        tuple(tuple const& rhs)            : base_type(rhs) {}        template <typename U1, typename U2>        tuple(std::pair<U1, U2> const& rhs)            : base_type(rhs) {}        #include <boost/fusion/tuple/detail/tuple_expand.hpp>        template <typename T>        tuple& operator=(T const& rhs)        {            base_type::operator=(rhs);            return *this;        }        tuple& operator=(tuple const& rhs)        {            base_type::operator=(rhs);            return *this;        }        template <typename U1, typename U2>        tuple& operator=(std::pair<U1, U2> const& rhs)        {            base_type::operator=(rhs);            return *this;        }    };    template <typename Tuple>    struct tuple_size : result_of::size<Tuple> {};    template <int N, typename Tuple>    struct tuple_element : result_of::value_at_c<Tuple, N> {};    template <int N, typename Tuple>    inline typename        lazy_disable_if<            is_const<Tuple>          , result_of::at_c<Tuple, N>        >::type    get(Tuple& tup)    {        return at_c<N>(tup);    }    template <int N, typename Tuple>    inline typename result_of::at_c<Tuple const, N>::type    get(Tuple const& tup)    {        return at_c<N>(tup);    }}}#endif

⌨️ 快捷键说明

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