gpt4 book ai didi

C++重载优先于特化?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:45 26 4
gpt4 key购买 nike

给定以下代码:

#include <iostream>

using namespace std;

template<typename T> void Print(T t) {
cout << t << endl;
}

template<> void Print<int>(int t) {
cout << "int = " << t << endl;
}

void Print(int i) {
cout << "int2 = " << i << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
Print(1.3);
Print("tese");
Print(2);

char c;

cin >> c;

return 0;
}

为什么调用 Print(2) 没有歧义,而是调用 void Print(int i) ?

ps: 使用 bcc64.exe 和 cl.exe 测试。

最佳答案

标准的第 13.3.3 节,关于为重载选择最佳函数,明确指出如果在具有完全相同参数列表的模板函数和非模板函数之间进行选择,则非模板函数始终是比模板化的更适合。

关于C++重载优先于特化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244665/

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