设为首页 加入收藏

TOP

c++11 一个简易的tuple实现(二)
2014-03-10 12:52:42 来源: 作者: 【 】 浏览:137
Tags:11  一个 简易 tuple 实现

 

  template<unsigned int N, typename… TList> struct tuple_helper;

  template<unsigned int N, typename T, typename… TList>

  struct tuple_helper<N, tuple<T, TList…》

  {

  typedef tuple<T, TList…> tuple_type;

  typedef typename tuple_at<N, tuple_type>::tuple_type base_tuple_type;

  typedef typename tuple_at<N, tuple_type>::value_type return_type;

  constexpr static const return_type& get(const tuple_type& tuple_)

  {

  return static_cast<const base_tuple_type&>(tuple_)。head();

  }

  static void get(const nulltuple& tuple_) {}

  };

  //////////////////////////////////////////////////////////

  template<unsigned int N, typename… TList>

  constexpr const typename tuple_at<N, tuple<TList…> >::value_type&

  tuple_get(const tuple<TList…>& tuple_)

  {

  return tuple_helper< N, tuple<TList…> >::get(tuple_);

  }

  例子:

  #include "TypeTuple.h"

  #include <tuple>

  int main()

  {

  bool b;

  tuple<int, float, char> pp = {10, 0.1234, 'a'};

  b = std::is_same<tuple_at<2, tuple<int, float, char》::value_type, char >::value;

  std::cout 《 "is same: " 《 b 《 std::endl;

  b = std::is_same<tuple_at<2, tuple<int, float, char》::tuple_type, tuple<char> >::value;

  std::cout 《 "is same: " 《 b 《 std::endl;

  std::cout 《 tuple_get<0>(pp)《" "《 tuple_get<1>(pp) 《" "《tuple_get<2>(pp) 《 std::endl;

  std::tuple<int, float, char> cc{10, 0.1234, 'a'};

  std::cout 《 sizeof(pp) 《 "  " 《 sizeof(cc) 《 std::endl;

  tuple<int, float, char> ppc = pp;

  std::cout 《 tuple_get<0>(ppc)《" "《 tuple_get<1>(ppc) 《" "《tuple_get<2>(ppc) 《 std::endl;

  return 0;

  }

      

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一个裸的KM算法实例详解 下一篇MFC如何修改BMP图片的大小

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)
·TCP和UDP在socket编 (2025-12-26 02:20:32)
·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)