gpt4 book ai didi

c++ - 调用模板函数和非模板函数时的优先级是什么?

转载 作者:行者123 更新时间:2023-12-04 03:26:52 24 4
gpt4 key购买 nike

为什么会这样:

#include <iostream>
using namespace std;

template <class T> void f(T t) {cout << "A";}
template <> void f(float x) {cout << "B";}
void f(float x) {cout << "C";}

int main()
{
float x;
f(x);
f<>(x);
f<float>(x);

return 0;
}


显示这个:CBB

我非常不清楚,尤其是为什么 f<float>(x);显示器 B .你能告诉我一些关于调用同名模板函数和非模板函数的优先级的更通用的规则吗?

最佳答案

正如 Walter E Brown 在他的 2018 CppCon talk 中所教导的那样基于特化的模板有不同的优先级:

  • 总是首先选择非模板重载;非模板比模板本身更专业。
  • 专用模板(您的 template <> void f(float) );我记得的方式是这些类型的模板“指定”它们的模板参数。
  • 最后选择通用模板(即不太专业)。

关于c++ - 调用模板函数和非模板函数时的优先级是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67439483/

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