Variadic Template(七)

 

使用组合的方式实现tuple的功能

复制代码
#include<iostream>
using namespace std;

template<typename... Values> class tup;
template<> class tup<>{};


// to realize function of tuple by using compistion
template<typename Head, typename... Tail>
class tup<Head, Tail...>
{
    typedef tup<Tail...> composited;
protected:
    composited m_tail;
    Head m_head;
public:
    tup(){};
    tup(Head v, Tail... vtail)
        :m_tail(vtail...), m_head(v){}
    
    Head head(){
        return m_head;
    }

    composited& tail(){
        return m_tail;
    }
};

int main() 
{
    tup<int, float, string>it1(41,6.3,"nico");
    cout << "sizeof(it1) = " << sizeof(it1) << endl;
    cout << "it1.head() = " << it1.head() << endl;
    cout << "it1.tail().head() = " << it1.tail().head() << endl;
    cout << "it1.tail().tail().head() = " << it1.tail().tail().head() << endl;
    return 0; 
}
复制代码

 

posted @   王清河  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示