[C++] 模板编程-13 编译期if、switch、for
创始人
2024-11-15 01:32:48
  • 模板实现编译器选择结构

一 If结构

  • 这种结构的模板参数是一个非类型参数
  • 利用特化实现了true和false的不同处理
// 主模版 template  struct templateA;  // true分支 template <> struct templateA {  };  // false分支 template <> struct templateA {  };

C++17 特性中的if条件编译

    constexpr bool aaaa = true;      if constexpr (aaaa)         qDebug()<<"aaaaa";     else         qDebug()<<"bbbbb";来进行条件编译

二 Swtich结构

// 主模版 template  struct templateA;  template <> struct templateA<1> {  };  template <> struct templateA<2> {  };

三 for结构

  • 编译期的循环
  • 这里的ForTemplate用到了模板递归
// 主模版 template   struct ForTemplate {   static void F()   {       qDebug()<<"循环的执行语句"<::F();   } }; 
  • 由于这样没有终止这个递归的条件,所以需要利用全特化终止递归
template <> struct ForTemplate<0> {   static void F()   {       qDebug()<<"循环的执行语句结束";   } };  // 调用 ForTemplate<100>::F();

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...