[Bug c/39985] New: Type qualifiers not actually ignored on function return type

anders at kaseorg dot com gcc-bugzilla@gcc.gnu.org
Thu Apr 30 23:45:00 GMT 2009


The warning printed with -Wignored-qualifiers (“warning: type qualifiers
ignored on function return type”) seems to be lying.  The const on a function’s
return type is not actually ignored, as can be demonstrated using typeof().  I
think that the warning should be right and the typeof() behavior is wrong, but
IÂ’m not actually sure.

int f(void);
const int g(void);  /* warning: type qualifiers ignored on function return type
*/
typeof(f()) a;
a = 5;
typeof(g()) b;
b = 5;  /* error: assignment of read-only variable ‘b’ */

Another thing that seems similarly strange is that a statement expression can
return a const type, even though it is not an lvalue:

const int x = 5;
typeof( ({ x; }) ) y;
y = 5;  /* error: assignment of read-only variable ‘y’ */


-- 
           Summary: Type qualifiers not actually ignored on function return
                    type
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: anders at kaseorg dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39985



More information about the Gcc-bugs mailing list