gpt4 book ai didi

如果两个模板函数都匹配参数列表,C++ 将调用哪个模板

转载 作者:行者123 更新时间:2023-12-01 14:22:39 26 4
gpt4 key购买 nike

template<class T>
void fn(T t){}

template<class T>
void fn(std::vector<T> vt){}

void f() {
std::vector<int> vt;
fn(vt);
}

我知道会调用第二个模板函数,但不知道模板函数匹配的规则。

最佳答案

Partial ordering发生在调用函数模板特化的重载决策中。

Informally "A is more specialized than B" means "A accepts fewer types than B".

对于这种情况,第二个 fn 更专业,并且在重载决策中获胜,因为它接受的 std::vector 实例化类型少于第一个一个,它可以接受所有类型。

关于如果两个模板函数都匹配参数列表,C++ 将调用哪个模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62316163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com