- 1、本文档共246页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C++模板元编程实战:一个深度学习框架的初步实现
1.第一部分元编程基础技术
2.第1章禀无技巧
3.第2章异类词典与policy模板
4.第3章深度学习概述
5.第4章类型体系与基本据类型
6.第5章运算与表达式模板
7.第6章基本层
8.第7章复合层与循环层
9.第8章求值写优化
10.后记——方家休见笑,吾道本艰难
第一部分元编程基础技术
第1章基本技巧
本章将讨论元编程与编译期计算所涉及的基本方法。我们首先介绍元函,通过简单的示
例介绍编译期与运行期所使用“函”的异同。其次,在此基础上进一步讨论基本的顺序、
分支、循环代码的书写方式。最后介绍一种经典的技巧——奇特的递归模板式。
上述内容可以视为基本的元编程技术。而本书后续章节也可以视为这些技术的应用。掌握
好本章所讨论的技术,是熟练使用C++模板元编程与编译期计算的前提。
1.1元函与typjtraits
1.1.1元函介绍
C++元编程是一种典型的函式编程,函在整个编程体系中处于核心的地位。这里的函
与一般c+十程序中定义与使用的函有所区别,更接近学意义上的函——是无副作
用的映射或变换:在输入相同的前提下,多次调用同一个函,得到的结果也是相同的。
如果函存在副作用,那么通常是由于存在某些维护了系统状态的变量而导致的。每次函
调用时,即使输入相同,但系统状态的差异会导致函输出结果不同:这样的函被称
为具有副作用的函。元函会在编译期被调用与执行。在编译阶段,编译器只能构造常
量作为其中间结果,无法构造并维护可以记录系统状态并随之改变的量,因此编译期可以
使用的函(即元函)只能是无副作用的函。
以下代码定义了一个函,满足无副作用的限制,可以作为元函使用6
1constexprintfun(inta){returna+1;}
其中的constexpr为C++ll中的关键字,表明这个函可以在编译期被调用,是一个元函
。如果去掉了这个关键字,那么函fun将只能用于运行期,虽然它具有无副作用的性
质,但也无法在编译期被调用。
作为一个反例,考虑如下的程序:
1staticintcall_count=3;
2constexprintfun2(inta)
3(
4returna+(call_count++);
5}
这个程序片断无法通过编译——它是错误的。原因是函内部的逻辑丧失了“无副作用”的
性质——相同输入会产生不同的输出;而关键字constexpr则试图保持函的“无副作用”特
性,这就导致了冲突。将其进行编译会产生相应的编译错误。如果将函数中声明的
constexpr关键字去掉,那么程是可以通过编译的,但fun2无法在编译期被调用,因为它
不再是一个元函数了。
希望上面的例子能让读者对元函数有一个基本的印象。在C++中,我们使用关键字
cnstexpr来表示数值元函数,这是C+十中涉及的一种元函数,但远非全部。事实上,
C++中用得更多的是类型元函数——即以类型作为输入和(或)输出的元函数。
LL2类型元函数
从数
您可能关注的文档
最近下载
- ISO50001-2018能源管理体系能源因素风险识别评价及应对措施表.pdf VIP
- 2022年湖南省文物考古研究所招聘38人考试备考试题及答案解析.docx
- {经销商管理}经销商手册.pdf
- GB∕T 16739.1-2023 汽车维修业经营业务条件 第1部分:汽车整车维修企业.pdf
- DL∕T 2141-2020 燃煤电厂锅炉烟气超净电袋复合除尘工程技术规范.pdf
- 学好普通话推广普通话主题班会PPT课件.pptx VIP
- 湘科版科学四年级上册全册同步练习题(含答案).docx
- 数字化改革背景下会计工作的创新探析及应对策略.pdf
- 河湖疏浚底泥无害化处理和资源化利用研究进展.pdf
- 部编版四年级语文上册第2单元习作《我的家人》教学课件.pptx VIP
- 软件下载与安装、电脑疑难问题解决、office软件处理 + 关注
-
实名认证服务提供商
专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!
文档评论(0)