You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用模板参数包的计算结果填充tuple?

对模板参数计算后生成tuple返回的实现方法

当然可行,问题出在你对折叠表达式和tuple初始化的语法使用上。以下是修正后的代码:

#include <tuple>

template <typename TupleT, int ...values>
auto create_tuple() {
    // 直接展开计算后的模板参数,初始化目标tuple
    return TupleT{ (values + 1)... };
}

int main() {
    auto t = create_tuple<std::tuple<int, int>, 1, 2>(); // 此时t的值为(2,3)
}

关键说明:

  • 你之前的写法多了多余的逗号,正确的折叠展开语法是(values + 1)...,它会将每个模板参数values分别加1后,依次作为TupleT构造函数的初始化参数。
  • 确保你的编译器开启C17及以上标准(折叠表达式是C17的特性)。
  • 如果需要更好的兼容性,也可以通过std::make_tuple生成临时tuple再转换:
    return static_cast<TupleT>(std::make_tuple( (values + 1)... ));
    

内容的提问来源于stack exchange,提问作者Lasersköld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:15:55