我想对模板参数进行一些计算,并将它们插入元组中并返回。不过我似乎搞不懂语法。有可能吗?
戈德堡连杆
#include <tuple>
template <typename TupleT, int ...values>
auto create_tuple() {
// Fold expressions does not seem to work
// return TupleT{((values + 1) , ...)};
// This does not work either
// return TupleT{(values + 1) , ...};
// Expected result
// return TupleT{1 + 1, 1 + 2}
}
int main() {
auto t = create_tuple<std::tuple<int, int>, 1, 2>(); // Usage, cannot be changed
}
这只是一个传递给构造函数的普通参数包。
return TupleT{(values + 1)...};
现场演示
您也可以使用std::make_tuple(...)
,我发现它富有表现力且干净:
return std::make_tuple((values + 1)...);