This website teach us how to implement a simple std::tuple, but there are a piece of codes I do not understand
template <size_t k, class... Ts>
typename std::enable_if<
k == 0, typename elem_type_holder<0, tuple<Ts...>>::type&>::type
get(tuple<Ts...>& t) {
return t.tail;
}
template <size_t k, class T, class... Ts>
typename std::enable_if<
k != 0, typename elem_type_holder<k, tuple<T, Ts...>>::type&>::type
get(tuple<T, Ts...>& t) {
//Why t could assign to different type?
tuple<Ts...>& base = t;
return get<k - 1>(base);
}
My question is
tuple<T, Ts...>
and
tuple<Ts...>
are different types, how could it work?
Edit : I think I found the answer, because
tuple<Ts...>
is base class of
tuple<T,Ts...>
Aucun commentaire:
Enregistrer un commentaire