From [temp.deduct.call]:
The output of the template argument is done by comparing each parameter of the function template parameter (calling it P) using the type of the corresponding call argument (name it A), as described below.
P const T&, and A- int, intand const intin three challenges.
Then we have:
P , , P, .
P , P' == const T A == int A == const int. T == int , P' == const int ( P == const int&) A == const int. CV, A , OK:
, A A ( , A , ). , :
- P , A ( , ) CV, A.
, f<int>.