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

📄 tuple_basic_no_partial_spec.hpp

📁 著名的Parser库Spirit在VC6上的Port
💻 HPP
📖 第 1 页 / 共 2 页
字号:
      typedef typename mapped_tuple::cons3 cons3;
      typedef typename mapped_tuple::cons2 cons2;
      typedef typename mapped_tuple::cons1 cons1;

    public:
      typedef tuple self_type;

      explicit tuple(const T1& t1 = T1(), 
                     const T2& t2 = T2(),
                     const T3& t3 = T3(),
                     const T4& t4 = T4(),
                     const T5& t5 = T5(),
                     const T6& t6 = T6(),
                     const T7& t7 = T7(),
                     const T8& t8 = T8(),
                     const T9& t9 = T9(),
                     const T10& t10 = T10()) :
        cons1(t1, cons2(t2, cons3(t3, cons4(t4, cons5(t5, cons6(t6,cons7(t7,cons8(t8,cons9(t9,cons10(t10))))))))))
      {
      }

      template<typename Head, typename Tail>
      explicit tuple(const cons<Head, Tail>& other) : 
        cons1(other.head, other.tail)
      {
      }

      template<typename First, typename Second>
      self_type& operator=(const std::pair<First, Second>& other)
      {
        this->head = other.first;
        this->tail.head = other.second;
        return *this;
      }

      template<typename Head, typename Tail>
      self_type& operator=(const cons<Head, Tail>& other)
      {
        this->head = other.head;
        this->tail = other.tail;

        return *this;
      }
    };

    namespace detail {

      template<int N> struct workaround_holder {};

    } // namespace detail

    template<int N, typename Head, typename Tail>
    typename detail::element_ref<N, cons<Head, Tail> >::RET
    get(cons<Head, Tail>& t, detail::workaround_holder<N>* = 0)
    {
      return detail::get_class<N>::get(t);
    }

    template<int N, typename Head, typename Tail>
    typename detail::element_const_ref<N, cons<Head, Tail> >::RET
    get(const cons<Head, Tail>& t, detail::workaround_holder<N>* = 0)
    {
      return detail::get_class<N>::get(t);
    }

    // Make a tuple
    template<typename T1>
    inline
    tuple<T1>
    make_tuple(const T1& t1)
    {
      return tuple<T1>(t1);
    }

    // Make a tuple
    template<typename T1, typename T2>
    inline
    tuple<T1, T2>
    make_tuple(const T1& t1, const T2& t2)
    {
      return tuple<T1, T2>(t1, t2);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3>
    inline
    tuple<T1, T2, T3>
    make_tuple(const T1& t1, const T2& t2, const T3& t3)
    {
      return tuple<T1, T2, T3>(t1, t2, t3);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4>
    inline
    tuple<T1, T2, T3, T4>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4)
    {
      return tuple<T1, T2, T3, T4>(t1, t2, t3, t4);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5>
    inline
    tuple<T1, T2, T3, T4, T5>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5)
    {
      return tuple<T1, T2, T3, T4, T5>(t1, t2, t3, t4, t5);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
    inline
    tuple<T1, T2, T3, T4, T5, T6>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6)
    {
      return tuple<T1, T2, T3, T4, T5, T6>(t1, t2, t3, t4, t5, t6);
    }
  
    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
    inline
    tuple<T1, T2, T3, T4, T5, T6, T7>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7)
    {
      return tuple<T1, T2, T3, T4, T5, T6, T7>(t1, t2, t3, t4, t5, t6, t7);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
    inline
    tuple<T1, T2, T3, T4, T5, T6, T7, T8>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8)
    {
      return tuple<T1, T2, T3, T4, T5, T6, T7, T8>(t1, t2, t3, t4, t5, t6, t7, t8);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
    inline
    tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9)
    {
      return tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>(t1, t2, t3, t4, t5, t6, t7, t8, t9);
    }

    // Make a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
    inline
    tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
    make_tuple(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10)
    {
      return tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
    }

    // Tie variables into a tuple
    template<typename T1>
    inline
    tuple<detail::assign_to_pointee<T1> >
    tie(T1& t1)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2> >
    tie(T1& t1, T2& t2)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3> >
    tie(T1& t1, T2& t2, T3& t3)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T5>(&t5));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5>, 
      detail::assign_to_pointee<T6> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5, T6 &t6)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T6>(&t5),
                        detail::assign_to_pointee<T5>(&t6));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5>, 
      detail::assign_to_pointee<T6>, 
      detail::assign_to_pointee<T7> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5, T6 &t6, T7 &t7)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T5>(&t5),
                        detail::assign_to_pointee<T6>(&t6),
                        detail::assign_to_pointee<T7>(&t7));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5>, 
      detail::assign_to_pointee<T6>, 
      detail::assign_to_pointee<T7>, 
      detail::assign_to_pointee<T8> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5, T6 &t6, T7 &t7, T8 &t8)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T5>(&t5),
                        detail::assign_to_pointee<T6>(&t6),
                        detail::assign_to_pointee<T7>(&t7),
                        detail::assign_to_pointee<T8>(&t8));
    }

    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5>, 
      detail::assign_to_pointee<T6>, 
      detail::assign_to_pointee<T7>, 
      detail::assign_to_pointee<T8>, 
      detail::assign_to_pointee<T9> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5, T6 &t6, T7 &t7, T8 &t8, T9 &t9)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T5>(&t5),
                        detail::assign_to_pointee<T6>(&t6),
                        detail::assign_to_pointee<T7>(&t7),
                        detail::assign_to_pointee<T8>(&t8),
                        detail::assign_to_pointee<T9>(&t9));
    }
    // Tie variables into a tuple
    template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
    inline
    tuple<detail::assign_to_pointee<T1>, 
      detail::assign_to_pointee<T2>, 
      detail::assign_to_pointee<T3>, 
      detail::assign_to_pointee<T4>, 
      detail::assign_to_pointee<T5>, 
      detail::assign_to_pointee<T6>, 
      detail::assign_to_pointee<T7>, 
      detail::assign_to_pointee<T8>, 
      detail::assign_to_pointee<T9>, 
      detail::assign_to_pointee<T10> >
    tie(T1& t1, T2& t2, T3& t3, T4& t4, T5 &t5, T6 &t6, T7 &t7, T8 &t8, T9 &t9, T10 &t10)
    {
      return make_tuple(detail::assign_to_pointee<T1>(&t1),
                        detail::assign_to_pointee<T2>(&t2),
                        detail::assign_to_pointee<T3>(&t3),
                        detail::assign_to_pointee<T4>(&t4),
                        detail::assign_to_pointee<T5>(&t5),
                        detail::assign_to_pointee<T6>(&t6),
                        detail::assign_to_pointee<T7>(&t7),
                        detail::assign_to_pointee<T8>(&t8),
                        detail::assign_to_pointee<T9>(&t9),
                        detail::assign_to_pointee<T10>(&t10));
    }
    // "ignore" allows tuple positions to be ignored when using "tie". 
    namespace {
      detail::swallow_assign ignore;
    }

} // namespace tuples
} // namespace boost
#endif // BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP

⌨️ 快捷键说明

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