我其实也就比较感兴趣模板不定参是怎么做到的
在c里面是依赖于va_list和同在一个头文件vadef.h的一些预定义宏

cppreference.com 可以看到,tuple使用了template<class... Types>,但是在具体实现中有所不同,先来看VC++的实现

首先看到的是一个空的tuple,里面放了一大堆空的玩意。

template<>
class tuple<> {	// empty tuple
public:
	constexpr tuple() noexcept
		{	// default construct
		}

	constexpr tuple(const tuple&) noexcept	// TRANSITION, for binary compatibility
		{	// copy construct
		}
};

关注一开始的几行和注释

template<class This, class... Rest>
class tuple<This, Rest...> : private tuple<Rest...> // recursive tuple definition
// 也就是说tuple其实是递归实现的

然后是一段长达1000多行的实现,emmmmm
哦豁劝退

待补