C++11一个元组的简单实现
发布日期:2022-03-03 10:43:57 浏览次数:2 分类:技术文章

本文共 1369 字,大约阅读时间需要 4 分钟。

下面是实现一个元组的简单思路

代码如下:

#ifndef MY_TUPLE_HPP#define MY_TUPLE_HPPtemplate 
class my_tuple {};template
class my_tuple
{public: typedef my_tuple<> base_type; typedef my_tuple
this_type; typedef T element_type; my_tuple(const T& t) : element_(t) {} T& get() { return element_; }private: T element_;};template
class my_tuple
: public my_tuple
{public: typedef my_tuple
base_type; typedef my_tuple
this_type; typedef T element_type; my_tuple(const T& t, Args... args) : base_type(args...), element_(t) {} T& get() { return element_; }private: T element_;};template
struct select {};template
struct select<0, my_tuple
>{ typedef my_tuple
this_type; typedef T element_type;};template
struct select
>{ typedef typename select
>::this_type::base_type this_type; typedef typename select
>::this_type::base_type::element_type element_type;};template
struct counter {};template <>struct counter<>{ static const size_t count = 0;};template
struct counter
{ static const size_t count = counter
::count + 1;};template
typename select
>::element_type&my_tuple_get(my_tuple
& tup){ return (static_cast
>::this_type&>(tup)).get();}template
my_tuple
make_my_tuple(Args... args){ typedef my_tuple
tuple_type; return tuple_type(args...);}template
size_t get_my_tuple_size(my_tuple
& tup){ return counter
::count;}#endif

转载地址:https://blog.csdn.net/yangjie569889321/article/details/79234489 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:unity Animator动画 如何快速过渡
下一篇:定义返回函数指针的函数

发表评论

最新留言

很好
[***.229.124.182]2024年03月22日 04时10分56秒