C++11:实现std::tuple

发布时间 2023-03-26 10:00:35作者: karinto

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