https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88378
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- That is we get: <source>: In function 'void g(S<int>)': <source>:10:7: error: no matching function for call to 'S<int>::f(int)' 10 | s.f (0); | ~~~~^~~ <source>:5:8: note: candidate: 'template<class U> void S<T>::f(U*&) [with T = int]' 5 | void f (U*&); | ^ <source>:5:8: note: template argument deduction/substitution failed: <source>:10:7: note: mismatched types 'U*' and 'int' 10 | s.f (0); | ~~~~^~~