【发布时间】:2016-09-04 18:22:01
【问题描述】:
以下代码prints "func 2"。
为什么在存在显式(非推导)模板参数的情况下,编译器将第二个模板视为更好的匹配?为什么没有歧义?
我希望引用 C++ 标准。
#include <iostream>
template<class T>
struct identity
{
typedef T type;
};
template<class T>
void func(T)
{
std::cout << "func 1\n";
}
template<class T>
void func(typename identity<T>::type)
{
std::cout << "func 2\n";
}
int main()
{
func<int>(1);
}
【问题讨论】:
标签: c++ template-specialization overload-resolution