I have a parameter pack given in a variadic template class and want to extract the first type.
Currently I do this, which works fine but is somehow cumbersome. Is it possible to do the same thing simpler? FirstEntityType
should be defined to have the type of the first type in EntityTs
. Note, I want to keep the signature of the class template. I know that it would be possible to write template<typename FirstEntityType, typename... OtherEntityTypes>
, it is however something that I don't want to do.
template<typename... EntityTs>
class EntityContext
{
template<typename T, typename ... Ts>
struct K {
using type = T;
};
using FirstEntityType = typename K<EntityTs...>::type;
// ...
}
You could write:
using FirstEntityType = std::tuple_element_t<0, std::tuple<EntityTs...>>;
You may use
std::tuple_element<0, std::tuple<EntityTs...>>::type
来源:https://stackoverflow.com/questions/45578484/is-it-possible-to-get-the-first-type-of-a-parameter-pack-in-a-one-liner