// { dg-do compile } template<typename T> struct A; template<typename T> struct B {}; template<typename T> A<T>& operator<<(A<T>&, const B<T>&);
template<typename T> struct A { A<T>& operator<<(A<T>& (*)(A<T>&)); }; template<typename T> A<T>& foo(A<T>&); extern A<char> c; int main() { c << (1, foo); } ICEs in resolve_overloaded_unification with 3.4, 4.1.2 and the trunk, compiles fine with 3.2.3. -- Summary: [4.1/4.2/4.3 Regression] ICE in resolve_overloaded_unification Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32232