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

如何向C++可变参数类模板添加用户指定的编译期整型常量

低侵入备选方案(无需调整模板参数顺序)

如果不想改动原有模板的参数结构,可以用编译期常量标签传递N值,无运行时开销:

// 定义编译期常量标签
template<size_t N>
constexpr inline std::integral_constant<size_t, N> deg_tag{};

// 构造函数新增第一个参数接收标签
template<typename Part, typename... Parts>
class State
{
    // 原有逻辑不变
    template<size_t N>
    State(std::integral_constant<size_t, N>, Part&& p, Parts&&... ps)
        : _parts(std::forward<Part>(p), std::forward<Parts>(ps)...)
    {
        static_assert((std::is_same_v<typename Parts::energy_t, std::array<double, N>> && ...),
            "部件energy_t类型与指定N不匹配");
    }
};

// 使用方式
State state{deg_tag<3>, X(), Y()};

内容的提问来源于stack exchange,提问作者Bbllaaddee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:06