这是由这篇文章引起的(第5页)
template<class T>
T const &f(T const &a, T const &b){
return (a > b ? a : b);
}
template int const &f<int>(int const &, int const &);
int main(){
int x = 0, y = 0;
short s = 0;
f(x, y); // OK
f(x, s); // Is this call well-formed?
}
通话'f(x, s)'
格式是否正确?我假设由于函数模板'f'
是显式实例化的,因此将应用标准转换,因此'short s'
将转换'int'
为匹配对显式 specialization 的调用'f<int>'
。但这似乎是不正确的?
标准的哪一部分谈到了在这种情况下的适用规则?