I want to use the types of a template parameter pack as parameters to a different template, but cut off the last parameter.
For example:
template <class... Ts> struct some_template;
template <class... Ts> struct foo
{
using bar = some_template<magically_get_all_but_last(Ts)...>;
};
// I might be missing a few "typename"s, but you get the idea.
static_assert(std::is_same<foo<int, bool, std::string>::bar, some_template<int,bool> >::value);
Note that this is the opposite of getting only the last parameter.