Dear All, I am unable to understand following test case behaviour. When i compile and execute this with g++ 3.4.6 it works fine. But when i compile and execute this with g++ 4.3.2 it aborts.
I think the test case is OK. But g++ 4.3.2 having bug. Below is test case: ========================================================== #define ieq(X,Y) if((X)!=(Y)) abort(); extern void abort (); struct B_ { int i; }; struct D_:public B_ { }; D_ d_; int f_ (B_ &) { return 100; } template < class T > int g_ (T t) { return f_ (d_) + f_ (t); } int f_ (D_ &) { return 1; } int main (int argc, char *argv[]) { D_ d; ieq (g_ (d), 101); return 0; } ========================================================== Please help me regarding this. -- Summary: g++ template with overloaded function behave differently on "g++ 4.3.2" and "g++ 3.4.6" Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ashutosh dot nema at nechclst dot in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38030