是否可以在单行中获得第一类参数包?

dan*_*ani 3 c++ variadic-templates c++17

我有一个在可变参数模板类中给出的参数包,并希望提取第一个类型.

目前我这样做,工作正常,但有点麻烦.有可能做同样的事情更简单吗?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;

   // ...
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 16

你可以写:

using FirstEntityType = std::tuple_element_t<0, std::tuple<EntityTs...>>;
Run Code Online (Sandbox Code Playgroud)


Jar*_*d42 6

你可以用

std::tuple_element<0, std::tuple<EntityTs...>>::type
Run Code Online (Sandbox Code Playgroud)