让我们玩下面的代码:
#include <iostream>
template <class T>
void func(T&&) {
std::cout<<"in rvalue\n";
}
template <class T>
void func(const T&) {
std::cout<<"in lvalue\n";
}
int main()
{
double n=3;
func<double>(n);
func(n);
}
Run Code Online (Sandbox Code Playgroud)
它打印:
in lvalue
in rvalue
Run Code Online (Sandbox Code Playgroud)
我不明白第二次电话会发生什么.编译器如何解析模板参数?为什么没有歧义?