template <typename ...Ts>
struct PackExtractor {
template <typename I>
using f = /* .... */;
};
PackExtractor<Ts...>
is a metafunction that returns U
, which is the I::value
-th element of the parameter pack Ts...
.
f:: I -> U
using Extractor = ml::PackExtractor<int, char, bool>;
using T = ml::f<
Extractor,
ml::Int<1>>;
static_assert( std::is_same_v<T, char>);