如下图代码,运行结果是5和19.12
但是如果把模板改成下图,则运行结果是5和9.12,编译器不选择显示具体化了,请教理由是什么?小弟拜谢
你把两个shownum函数的前后位置对换看看。。
按照我的理解,编译器选择调用两个函数的顺序是:shownum有两个版本,具体化和模板,实参类型是double,与具体化的形参double&完全匹配,原因是c++允许的无关紧要转换,实参type和形参type&完全匹配。而且显示具体化比模板的优先级要高,所以选择具体化。但运行结果却选择了模板,真是让我不明白啊。