我在可变参数模板类中给出了一个参数包,并希望提取第一个类型。
目前我这样做,效果很好,但有点麻烦。有可能做同样的事情更简单吗? FirstEntityType
应定义为EntityTs
中第一个类型的类型。注意,我想保留类模板的签名。我知道可以写template<typename FirstEntityType, typename... OtherEntityTypes>
,但这是我不想做的事情。
template<typename... EntityTs>
class EntityContext
{
template<typename T, typename ... Ts>
struct K {
using type = T;
};
using FirstEntityType = typename K<EntityTs...>::type;
// ...
}
答案 0 :(得分:15)
你可以写:
using FirstEntityType = std::tuple_element_t<0, std::tuple<EntityTs...>>;
答案 1 :(得分:5)
您可以使用
std::tuple_element<0, std::tuple<EntityTs...>>::type