effective c++ -- 模板与泛型编程
面向对象提供了运行期的多态,而模板则提供了编译期的多态。模板的编译期多态机制使得函数匹配机制相对于非模板的函数匹配发生了一些变化,也影响了继承体系下的一些声明与设计。本章讲解了模板的编译期多态对我们原先所熟悉的没有模板的世界的一些区别,最后介绍了traits class以及template元编程。
Item 41: 了解隐式接口和编译期多态
通常显式接口由函数的签名式(函数名称、参数类型、返回类型)构成。例如Widget class:
void advance( std::list<int>::iterator& iter, int d ){ if( typeid(std::iterator_traits<std::list<int>::iterator>::iterator_category) == typeid( std::random_access_iterator_tag ) ) iter += d;//!错误发生在这里 else ...}