これは、この記事 (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'
'f<int>'
この文脈で適用される規則について述べている規格の部分はどれですか?