打印以下程序T,T
。
#include <iostream>
template<typename T>
void f(T x, T y) {
std::cout << "T,T\n";
}
template<typename T1, typename T2>
void f(T1 x, T2 y) {
std::cout << "T1,T2\n";
}
int main() {
f(1, 1);
return 0;
}
哪个模板在代码中排在第一位没有什么区别。
我希望重载解决方案在这里是模棱两可的。T
,T1
和T2
都应推导为int
,这使两个模板都与呼叫站点完全匹配。
我无法找到任何解决规则(https://en.cppreference.com/w/cpp/language/overload_resolution)来解释为什么选择第一个模板。
我测试了clang++ -std=c++17
,以防万一。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句