C++ 模板元编程

本文介绍了如何使用C++模板元编程来实现基础数据类型(如数字、布尔值、字符串)和组合类型(如cons、list、字典)。通过模板的特性,实现了包括流程控制(顺序、分支、循环)在内的编程语言基本构造,并提供了输入输出的示例,展示了如何在编译期间用C++模板模拟Scheme语言的部分功能。
摘要由CSDN通过智能技术生成

元编程侧重点在于“用代码生成代码”,而泛型编程侧重点在于“减小代码对特定数据类型的依赖”,碰巧这两件事C++的模板都可以干。

编程语言特性
假如将模板当成一门全新的编程语言。一门编程语言最少应该具有什么特性呢?
需要有基本的数据类型,比如数字、字符串、布尔值等。
需要某种方法,将基础类型组合起来,表达更高级的概念。比如 C 语言中的 struct, 就是一种组合方法。数组和字典也是组合方法。
需要流程控制。典型的是顺序、分支、循环。
需要输入和输出。
还需要什么语言特性呢?已经没有了,具备上述的特性,基本就可写出任何程序。
下面按照这个顺序,描述一下模板元编程。

基本数据类型
数字

数字可分为整数和小数。怎么用模板类型表示整数呢?大概这样

template <int N>
struct number 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由技艺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值