struct ToList {
template <typename ...Ts>
using f = /* .... */;
};
ToList
is a metafunction that returns the parameter pack Ts...
wrapped in a list; ml::ListT
<Ts...>
.
f:: Ts... -> ml::ListT<Ts...>
ml::ListT
is used as the default Pipe
for all metafunctions that forward a parameter pack. Remember that a parameter pack is not a type, and can therefore cannot be what a metafunction returns.
using T = ml::f<
ml::ToList,
int, char>;
static_assert(
std::is_same_v<
T,
ml::ListT<
int, char>>);