1、实现基础功能
#include <iostream> #include <string> using namespace std; template<typename... Ty> struct Tuple; template<> struct Tuple<> {}; /* template<typename Ty1, typename... Ty2> struct Tuple<Ty1, Ty2...> : Tuple <Ty2...> { Ty1 val; };*/ //构造函数 template<typename Ty1, typename... Ty2> struct Tuple<Ty1, Ty2...> : Tuple<Ty2...> { Ty1 val; using Base = Tuple<Ty2...>; Tuple() {}; Tuple(Ty1 firstArg, Ty2... args) :val(firstArg), Base(args...) {} Base& getBase() { return *this; } }; int main() { Tuple<string, char, int> t("hello~~", 'c', 123); cout << t.val << endl; cout << t.getBase().val << endl; cout << t.getBase().getBase().val << endl; return 0; }
执行结果:
hello~~ c 123
2、添加get使得操作更优雅