Dear all, I would like to post a fault report for the GNU C/C++ compiler 4.3.0. Used invokation line for the GNU C++ compiler: gcc -c -x c++ -ansi -Wall -Werror -mcpu=603e -fverbose-asm -mbig -mmultiple -mstring -mstrict-align -meabi -msdata -fno-common -fno-exceptions -fno-rtti -O3 -fno-section-anchors -I<different include paths> -D<different #define's> X.CPP -oX.O // example program const int f (); template <typename T_> void g (T_&); void h (void) { g(f()); } GNU accepts the code fragment above which is illegal. It is illegal because . Function f() yields a rvalue (3.10/5); . the type of f() is "int" and not "const int" since only a class-type rvalue can be const-qualified (3.10/9); . so function g() should be instantiated as g<int>(int&) in the expression "g(f())"; . the parameter "int&" of function g<int>(int&) cannot bind a non-const rvalue (8.5.3/5). BTW, the Comeau online compiler rejects the code above. Kind regards W. Roehrl
Confirmed. Not a regression.
Fixed long ago.