tuples.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 1,330 行 · 第 1/3 页

HPP
1,330
字号
    typedef G g_type; typedef H h_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h;};///////////////////////////////////////////////////////////////////////////////////  tuple <9 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I>struct tuple<A, B, C, D, E, F, G, H, I,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif    nil_t   //  Unused>:   public tuple_base<tuple<A, B, C, D, E, F, G, H, I> > {    BOOST_STATIC_CONSTANT(int, length = 9);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i;};#if PHOENIX_LIMIT > 9///////////////////////////////////////////////////////////////////////////////////  tuple <10 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J>struct tuple<A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused>:   public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J> > {    BOOST_STATIC_CONSTANT(int, length = 10);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;};///////////////////////////////////////////////////////////////////////////////////  tuple <11 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K>struct tuple<A, B, C, D, E, F, G, H, I, J, K, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused>:   public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J, K> > {    BOOST_STATIC_CONSTANT(int, length = 11);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    typedef K k_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_,        typename call_traits<K>::param_type k_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_),        k(k_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),        k(init[tuple_index<10>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;    K k;};///////////////////////////////////////////////////////////////////////////////////  tuple <12 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K, typename L>struct tuple<A, B, C, D, E, F, G, H, I, J, K, L,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused>:   public tuple_base<tuple<A, B, C, D, E, F, G, H, I, J, K, L> > {    BOOST_STATIC_CONSTANT(int, length = 12);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    typedef K k_type; typedef L l_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_,        typename call_traits<K>::param_type k_,        typename call_traits<L>::param_type l_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_),        k(k_), l(l_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),        k(init[tuple_index<10>()]), l(init[tuple_index<11>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;    K k; L l;};#if PHOENIX_LIMIT > 12///////////////////////////////////////////////////////////////////////////////////  tuple <13 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K, typename L, typename M>struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t>:   public tuple_base<        tuple<A, B, C, D, E, F, G, H, I, J, K, L, M> > {    BOOST_STATIC_CONSTANT(int, length = 13);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    typedef K k_type; typedef L l_type;    typedef M m_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_,        typename call_traits<K>::param_type k_,        typename call_traits<L>::param_type l_,        typename call_traits<M>::param_type m_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_),        k(k_), l(l_), m(m_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),        k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),        m(init[tuple_index<12>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;    K k; L l; M m;};///////////////////////////////////////////////////////////////////////////////////  tuple <14 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K, typename L, typename M, typename N>struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, nil_t, nil_t>:   public tuple_base<        tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N> > {    BOOST_STATIC_CONSTANT(int, length = 14);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    typedef K k_type; typedef L l_type;    typedef M m_type; typedef N n_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_,        typename call_traits<K>::param_type k_,        typename call_traits<L>::param_type l_,        typename call_traits<M>::param_type m_,        typename call_traits<N>::param_type n_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_),        k(k_), l(l_), m(m_), n(n_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),        k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),        m(init[tuple_index<12>()]), n(init[tuple_index<13>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;    K k; L l; M m; N n;};///////////////////////////////////////////////////////////////////////////////////  tuple <15 member> class/////////////////////////////////////////////////////////////////////////////////template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K, typename L, typename M, typename N, typename O>struct tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, nil_t>:   public tuple_base<        tuple<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> > {    BOOST_STATIC_CONSTANT(int, length = 15);    typedef A a_type; typedef B b_type;    typedef C c_type; typedef D d_type;    typedef E e_type; typedef F f_type;    typedef G g_type; typedef H h_type;    typedef I i_type; typedef J j_type;    typedef K k_type; typedef L l_type;    typedef M m_type; typedef N n_type;    typedef O o_type;    tuple() {}    tuple(        typename call_traits<A>::param_type a_,        typename call_traits<B>::param_type b_,        typename call_traits<C>::param_type c_,        typename call_traits<D>::param_type d_,        typename call_traits<E>::param_type e_,        typename call_traits<F>::param_type f_,        typename call_traits<G>::param_type g_,        typename call_traits<H>::param_type h_,        typename call_traits<I>::param_type i_,        typename call_traits<J>::param_type j_,        typename call_traits<K>::param_type k_,        typename call_traits<L>::param_type l_,        typename call_traits<M>::param_type m_,        typename call_traits<N>::param_type n_,        typename call_traits<O>::param_type o_    ):  a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_), i(i_), j(j_),        k(k_), l(l_), m(m_), n(n_), o(o_) {}    template <typename TupleT>    tuple(TupleT const& init)    :   a(init[tuple_index<0>()]), b(init[tuple_index<1>()]),        c(init[tuple_index<2>()]), d(init[tuple_index<3>()]),        e(init[tuple_index<4>()]), f(init[tuple_index<5>()]),        g(init[tuple_index<6>()]), h(init[tuple_index<7>()]),        i(init[tuple_index<8>()]), j(init[tuple_index<9>()]),        k(init[tuple_index<10>()]), l(init[tuple_index<11>()]),        m(init[tuple_index<12>()]), n(init[tuple_index<13>()]),        o(init[tuple_index<14>()])    { BOOST_STATIC_ASSERT(TupleT::length == length); }    A a; B b; C c; D d; E e;    F f; G g; H h; I i; J j;    K k; L l; M m; N n; O o;};#endif#endif#endif#endif///////////////////////////////////////////////////////////////////////////////}   //  namespace phoenix#endif

⌨️ 快捷键说明

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