函数模板可以像普通函数那样重载。
C++ 编译器会从不同的候选中匹配一个并进行调用。
即使不涉及到模板,这种匹配的规则也很复杂,现在还有加上模板一起匹配。
先来个小例子:
#include <iostream> // maximum of two int values int max(int a, int b) { using namespace std; cout << "non template for two ints" << endl; return b < a ? a : b; } // maximum of two values of any type template<typename T> T max(T a, T b) { using namespace std; cout << "template" << endl; return b < a ? a : b; } int main() { ::max(7, 42); ::max(7.0, 42.0); ::max('a', 'b'); ::max<>(7, 42); ::max<double>(7, 42); ::max('a', 42.7); }
然后对应的结果
待续