看看这段代码:
template <typename ...TYPES>
struct List {
};
template <typename LIST>
struct Last;
template <typename ...HEAD, typename LAST>
struct Last<List<HEAD..., LAST>> {
typedef LAST Value;
};
此处,无法推断出Last
的模板参数。为什么?有没有比递归更简单的解决方案,直到一种类型仍然存在?
First
的实施工作直截了当:
template <typename LIST>
struct First;
template <typename FIRST, typename ...TAIL>
struct First<List<FIRST, TAIL...>> {
typedef FIRST Value;
};