A related example:
template <class T, void (*P)(T)>
void f(T) {}
template <class T>
void g(T) {}
int main()
{
   f<int, g<int> >(42);
}
Here EDG uses T_ in the parameters of both f and g, i.e.
_Z1fIiXadL_Z1gIiEvT_EEEvT_
whereas gcc and clang use a substitution for the parameter of f,
_Z1fIiXadL_Z1gIiEvT_EEEvS1_
Jason