Source (3 lines, bug.cxx): double rint(double); // Example illustrates utility unsigned foo((unsigned)rint(3.2)); // This less desirable form works unsigned bar(unsigned(rint(3.2))); // This equivalent doesn't G++ whines: bug.cxx:3: `unsigned int rint' redeclared as different kind of symbol bug.cxx:1: previous declaration of `double rint(double)' bug.cxx:3: warning: initialization to `unsigned int' from `double' bug.cxx:3: warning: argument to `unsigned int' from `double'
This is already fixed on the mainline and will not be fixed for 3.3.x because the bison based parser cannot handle this. Also read <http://gcc.gnu.org/bugs.html#parsing> as this is known bug that was fixed by having a hand made parser for c++ which will not be back ported to 3.3.x.
Reopening to mark as a dup of ....
bug 11796. *** This bug has been marked as a duplicate of 11796 ***