论坛首页
任务活动
问答
论坛专题
登录
注册
elecintop
+ 关注
粉丝
3
|
主题
176
|
回帖
1329
加好友
私信
帖子
主题
回复
评论
C++模板元编程(C++ template metaprogramming)
2018-12-17 16:34
万利电子
89
9811
......
具体来说 C++ 模板可以做以下事情:编译期数值计算、类型计算、代码计算(如循环展开),其中数值计算实际 ...
C++ 模板是图灵完备的,这使得 C++ 成为两层次语言(two-level languages,中文暂且这么翻译,文献[9]), ...
2. 模板元编程概述 如果对 C++ 模板不熟悉(光熟悉语法还不算熟悉),可以先跳过本节,往下看完例子再回来 ...
C++11 关于模板的新特性(详见文献[1]第15章,文献[4]C++11): “>>” 根据上下文自动识别正确语义; 函 ...
一个例子如下(需要 GCC 编译,GCC 对 C++11 几乎全面支持,VS2013 此处总是在基类中查找名字,且函数模板 ...
关于 template、typename、this 关键字的使用(文献[4]模板,文献[5]): 依赖于模板参数(template param ...
上例中,由于 a.cpp 和 b.cpp 中的 print 实例等价(模板实例的二进制代码在编译生成的对象文件 a.obj、b.o ...
实例化,编译链接的简单例子如下(参考了文献[1]第10页):
关于模板的编译和链接(详见文献[1] 1.3、文献[4]模板): 包含模板编译模式:编译器生成每个编译单元中遇 ...
纠正方法是使用模板特例化,如下:
上面的错误是因为,当编译 aTMP 时,并不判断 N==0,而仅仅知道其依赖 aTMP(lazy instantiation),从而 ...
所以模板代码写完后最好写个诸如显示实例化的测试代码,更深入一些,可以插入一些模板调用代码使得编译器及 ...
隐式实例化时,成员只有被引用到才会进行实例化,这被称为推迟实例化(lazy instantiation),由此可能带来 ...
关于模板实例化(template instantiation)(详见文献[4]模板): 指在编译或链接时生成函数模板或类模板 ...
对模板的多个实例,类型等价(type equivalence)判断规则(详见文献[2] 13.2.4):同一个模板(模板名及其 ...
关于模板特例化(详见文献[1]第4章): 在定义模板特例之前必须已经有模板通例(primary template)的声明 ...
更多模板特例化的例子如下(参考了文献[1]第44页):
所谓模板特例化即对于通例中的某种或某些情况做单独专门实现,最简单的情况是对每个模板参数指定一个具体值 ...
C++11 引入变长模板参数,请见下文。 模板特例化(template specialization,又称特例、特化)的简单示例如 ...
前一页
9
10
11
12
13
14
15
后一页
2
3
近期访客