【发布时间】:2018-02-25 01:58:01
【问题描述】:
我正在尝试将N 不同类型的参数包折叠成具有各自类型的std::tuple 或N-1 std::pairs。
例如表达式
ResolveToTupleOfPairs<void, int, long>::Type tuple;
应该评估为
std::tuple<std::pair<void, int>, std::pair<int, long>> tuple;
所以我正在寻找ResolveToTupleOfPairs 类型的实现,以按照解释折叠参数包。我当前的实现如下,但显然它导致类型是一对元组,每个对都持有相同类型两次,而不是<T0, T1>, <T1, T2>, ...。
template<typename... T>
struct ResolveToTupleOfPairs {
static_assert(sizeof...(Args) > 1, "need at least two arguments");
using Type = std::tuple<std::pair<T, T>...>;
};
c++17 解决方案我很好。
【问题讨论】:
-
void在std::pair? -
@max66 只是一个示例类型来说明我的示例。