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

C++ CRTP模板框架封装咨询:多参数Bridge模板复用方案

CRTP框架下Bridge类的通用包装模板设计问题

我有一套基于CRTP的类模型,大部分信息是静态的,所有类都是单例,因此可以直接通过类型名而非对象引用来访问。现有伪代码定义的Bridge基类、各类Bridge实现以及SigOp基类如下:

// Bridge base template class
BridgeBaseT 
    <
    class tDerivedBridgeType, 
    class tRequiringDomain, 
    class tProvidingDomain
    >;

// Bridge types
SingleBridgeT 
    <
    class tDerivedBridgeType, 
    class tRequiringDomain, 
    class tProvidingDomain
    >
    : public BridgeBaseT<tDerivedBridgeType, tRequiringDomain, 
        tProvidingDomain>;

ThreadedFixedBridgeT    
    <
    class tDerivedBridgeType, 
    class tRequiringDomain, 
    class tProvidingDomain, 
    const FixedQueueSize tQueueSize = FixedQueueSize::_15_SLOTS
    >
        : public BridgeBaseT<tDerivedBridgeType, tRequiringDomain, 
        tProvidingDomain>;
    
ThreadedDynamicBridgeT  
    <
    class tDerivedBridgeType, 
    class tRequiringDomain, 
    class tProvidingDomain, 
    const unsigned int tInitialQueueSize = 16, 
    const unsigned int tQueueIncrement = 8
    >
    : public BridgeBaseT<tDerivedBridgeType, tRequiringDomain, 
        tProvidingDomain>;


// Base class for signals and operations
SigOpT 
    <
    class tDerivedSigOp, 
    class tRequiringDomain, 
    class tProvidingDomain
    >

由于tRequiringDomain、tProvidingDomain这类模板参数在多处重复使用,作为框架层希望通过一个包装模板整合所有组件,减少用户的编码量,预期使用形式如下:

using MyBridgeWrapper = BridgeWrapperT
    <
    MyReqDomain, 
    MyProvDomain,
    <BRIDGE_TEMPLATE>, 
    MySigOpTypeList...
    > {...};

其中<BRIDGE_TEMPLATE>需要替换为上述任意*BridgeT<>模板(包括其特定的额外参数,比如const FixedQueueSize tQueueSize),同时MyReqDomain、MyProvDomain要能自动转发给该Bridge模板,MySigOpTypeList则是SigOpT<>的参数包。

目前卡在无法找到通用方式让<BRIDGE_TEMPLATE>适配所有不同的Bridge模板:

  • 尝试过模板模板参数,但线程相关Bridge的额外参数(常量整型、枚举类型)多样性导致适配失败;
  • 尝试给BridgeBaseT添加参数包,但额外参数是常量整型值,无法纳入常规参数包;
    各种尝试都陷入了C模板特性的限制。当前使用C14,可考虑升级到更高版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:04:55