#include <iostream>
template<typename T>
bool pair_comparer(T a, T b) {
return a != b;
}
template<typename T, typename... Args>
bool pair_comparer(T a, T b, Args... args) {
return a == b && pair_comparer(args...);
}
int main() {
bool areSame = pair_comparer(1, 1, 2, 2, 6, 6);
std::cout << "areSame " << areSame << endl; // prints 0
return 0;
}
我不希望这个例子编译,但它是。如何调用pair_comparer
这里解决了两个参数?有什么我很想念Variadic模板:超载分辨率
有重载解析的规则可以得出结论,第一个重载比第二个更好匹配,因此递归终止。整套OR规则占用了大约30页的标准,但简而言之,第一个超载是后者的严格特例,因此更好。 –