条款 46 需要类型转换时请为模板定义非成员函数
当我们编写一个class template,而它所提供之“与此相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template” 内部的“friend”函数
定义于class内部的函数都暗自成为inline函数,包括像定义在内部的friend函数
条款 47 请使用traits classes 表现类型信息
Traits classes 使得“类型相关信息”在编译期可用,他们以template和“template 特化”完成实现
整合重载技术后,traits classes 有可能在编译期对类型执行“if else ”测试
5中迭代器分类:
input迭代器一次只能向前移动一步,只能读取它所指向的东西,只能读一次 istream_iterator
output迭代器一次只能向前移动一步,只为了输出,一次只能写一下 ostream_iterator
forward迭代器只可以向前移动,并且可以读写所指物一次以上
bidirectional迭代器可以前后移动
random access 迭代器可以在常量时间内向前或者向后跳动任意距离。
条款 48 认识template元编程
TMP,模板元编程可将工作由运行期移往编译期,因而得以实现早期错误侦测和更高的执行效率
TMP可被用来生成“基于政策选择组合”的客户定制代码,也可用来避免生成对某些特俗类型并不适合的代码