Страуструп утверждает что (стр 387): «Если аргументы функции шаблона были определены путем выведения по фактическим аргментам шаблона, к ним нельза применять продвижения, стандартные и определяемые пользователем преобразования.» При этом на стр 388 приведен правомерный пример:
template<typename T> class B {...}; template<typename T> class D : public B<T> {...};
template<typename T> void f(B<T>*);
void g(B<int>* pb, D<int>* pd) { f(pb); f(pd); }