您只需要使用参数包展开即可。使用以下代码:
using type = std::tuple<A<Args>...>;
这将会展开为:
using type = std::tuple<A<Args1>, A<Args2>, ..., A<ArgsN>>;
所以,实际的完整实现应为:
template <class... Args>
struct construct_tuple
{
using type = std::tuple<A<Args>...>;
};
// 使用方式
using MyTupleType = typename construct_tuple<int, char, double>::type;
这样,MyTupleType
将会自动推导为std::tuple<A<int>, A<char>, A<double>>
。