template<typename T> int cmp1(T a, T b);
template<typename T> int cmp2(T a, T b);
template<typename T, int (*cmp)(T, T) = cmp1> struct A { };
template <typename T> void f (A<T> &);
void g()
{
A<char> a;
f(a);
}
though 3.4 didn't accept it, it gave the same sorry, so it isn't a big regression.
Same ICE on valid testcase:
template<typename T> int cmp1(T a, T b);
template<typename T> int cmp2(T a, T b);
template<typename T, int (*cmp)(T, T) = cmp1> struct A { };
template <typename T> void f (A<T> &);
void g()
{
A<char> a;
f(a);
}
though 3.4 didn't accept it, it gave the same sorry, so it isn't a big regression.