有了extern后编译器会自动删除重复的实例化模板, 不但节省内存还节省了多余的实例化时间
注意被其他文件调用的外部模板一定要在要用到的类实例化之前实例化
局部和匿名成员可以作为模板实参了, 但仍要注意匿名类型的声明不能在参数位置...3 通用为本, 专用为末
继承构造
为了减少派生类层层透传函数以复用基类代码的情况, 可以在类内用using Base::Func;来获取基类被隐藏的同名成员函数(包括构造函数, 此时被称为继承构造函数...在C++11的标准中提出SFINEA的动机是当年C++98中并没有对这个规则进行标准化的描述, 因此各个编译器对于函数模板的匹配规则都是混乱的, 因此新标准提出SFINEA来使程序员能按照自己的想象来理解编译器并令其能精确匹配我们所需要的函数...函数模板是根据我们的实参类型在调用时进行特化并实例化的, 具体来说匹配遵循以下步骤:
首先对于一次调用, 编译器查找所有具有此名称的函数和实例化的模板函数表
在这些函数中进行比较, 将不可行的函数剔除,...failure, 不会引发error, 直到完成所有尝试
基础来说, SFINEA使得模板实例化的过程在各个编译器上都能表现出一样的效果, 且避免在不相关模板可见时实例化出错误的程序.