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使得操作更优雅