突然明白了C++模板的类的展开
也就是C++模板的递归

template<int i>
struct sum {enum {value = i + sum<i-1>::value};
};// 对i = 1特化
template<>
struct sum<0> {enum{value = 1};
};int main() {std::cout << sum<20>::value << std::endl;return 0;
}

当实例化模板类的时候需要传递 模板参数
c++的语法使用classname 也就是 xxx不同就是不同的模板,也就是他实际的值不同就是不同的模板类
对应上面的类就是
sum<20>
sum<19>
sum<18>
sum<17>
sum<16>

sum<0>
直到最后一个结果0位置,递归结束
仅仅是值类型的参数才可以递归,

tamplate 参数类型
有以下三种:

(1)模板的类型形参 (type parameter)

template<typename T>
template<class T>

(2)模板的非类型形参 (non-type parameter)

模板的非类型行参只有以下几种形式

整型或枚举型
到对象的指针或函数指针
到对象的引用或函数引用
成员指针
​ 因此,以下几种代码都是可以接受的

template<int a> struct A {};
template<int* b> struct B {};
template<void f(int)> struct C{};

(3)模板形参 (template template parameter)

模板行参的意思是模板里面可以是另一个模板,如

template<template<typename T>> class X{};

C++模板的类的展开相关推荐

  1. 6、 函数模板和类模板

    函数模板和类模板 前言 C++提供了函数模板(functiontemplate).所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表.这个通用函数就称为函数 ...

  2. [C++再学习系列] 函数模板和类模板

    函数模板和类模板 C++ 提供类模板和函数模板.函数模板允许重载 ,而类模板不允许重载(类无重载概念).类模板可以进行全特化和偏特化,而函数模板仅能够全特化 .因此,写一个看似函数模板偏特化的函数模板 ...

  3. 判断exception类型_C++核心准则T.44:使用函数模板推断类模板参数类型(如果可能)...

    T.44: Use function templates to deduce class template argument types (where feasible) T.44:使用函数模板推断类 ...

  4. C++编程进阶6(public继承与组合、private继承、多重继承、处理模板基类内的名称、如何避免模板代码膨胀)

    二十一.public继承与组合 public继承是是子类对象is a基类对象的关系,比如QT中的所有组件类都要继承QObject,所以所有的QT组件都是一个QObject. 而组合是has a(包含) ...

  5. 有关函数模板和类模板的说法

    下面有关函数模板和类模板的说法正确的有? 正确答案: A B C D 你的答案: A (错误) 函数模板的实例化是由编译程序在处理函数调用时自动完成的 类模板的实例化必须由程序员在程序中显式地指定 函 ...

  6. C++模板:类模板和类模板的友元【C++模板】(57)

    类模板 Stack 类 类模板 格式 类模板的应用 类模板的多文件实现 类模板的友元 类模板中的友元在.h 类模板中的友元在.cpp hpp STL入门 类模板 Stack 类 我们先给出我们之前实现 ...

  7. c++函数模板和类模板

    函数模板和类模板 前言 C++提供两种模板机制:函数模板.类模板 类属 -- 类型参数化,又称参数模板 前言 C++提供了函数模板(function template).所谓函数模板,实际上是建立一个 ...

  8. 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

     1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPush ...

  9. C++ 泛型编程(一):模板基础:函数模板,类模板,模板原理,模板匹配规则

    类模板 函数模板 泛型编程 泛型编程,泛型即是指具有在多种数据类型上皆可操作的含义,其实就是能够帮助开发者编写完全一般化并可重复使用的算法,同样的工作不需要做多次,同样的算法针对不同的类型也不应该写多 ...

  10. P5170 【模板】类欧几里得算法

    P5170 [模板]类欧几里得算法 https://www.cnblogs.com/bztMinamoto/p/10334354.html 对于类欧几里得算法,本质上可以理解为一条直线下的整点个数,是 ...

最新文章

  1. excel导入linux乱码怎么解决方法,,请大家都来看下,Excel导入有乱码?原因出在哪里?应该怎么解决?...
  2. LeetCode 1265. 逆序打印不可变链表(递归)
  3. php iframe 上传文件,php+iframe 实现上传文件功能示例
  4. form:radiobuttons单选按钮i-check选中触发
  5. 直接拿来用,10个PHP代码片段
  6. [Java][Servlet] Failed to destroy end point associated with ProtocolHandler [http-nio-8080]
  7. java 输出一个爱心_java基础 之 几个常用的类
  8. linux ip命令dhcp,嵌入式linux通过DHCP自动获取IP地址实现获取
  9. 团队项目第一阶段冲刺站立会议05
  10. 小程序 长按转发_微信小程序实现限制用户转发功能的实例代码
  11. HashMap初始容量指定规则
  12. 记录习惯【Unity 3D中3D场景下嵌套2D Canvas并实现窗口缩放】
  13. 使用微软TTS语音引擎实现文本朗读
  14. java jnlp 签名_JNLP(jar包签名)
  15. Unity3d优化总结2
  16. 全新仿DS网首页模板个人自动发卡,自动发货安装教程及其源码下载
  17. Python基于修正余弦相似度的电影推荐引擎
  18. sin和cos的爱恋
  19. 使用Unity制作游戏AI
  20. CentOS中使用VeraCrypt:安装及创建整个加密硬盘

热门文章

  1. 剑指Offer之二维数组中的查找
  2. 思科实验4.4.1.2-Packet Tracer - 综合技能练习
  3. CSS学习(一)--选择器
  4. 第八届蓝桥杯兴趣小组 JAVA暴解
  5. 一张图回顾Hadoop十年:Hadoop老矣,尚能饭否?
  6. Android MP3播放器MediaPlayer
  7. 平安保险php软件工程师工资,软件工程师
  8. 给宝贝女儿雅琪写的顺口溜
  9. Android仓库管理系统
  10. python爬取b站视频封面