$ cat pointless_volatile.c
volatile double limit_precision(double v) {
  volatile double x = v;
  return x;
}
$ gcc -Wall -c pointless_volatile.c
pointless_volatile.c:1: warning: type qualifiers ignored on function return
type
$ g++ -Wall -c pointless_volatile.c
$ g++ -Wall -W -pedantic -c pointless_volatile.c
$

This is strange, because the reasons for giving a warning are good in C++ as
they are good in C.  See Section 3.10 of the C++ standard:

Point 6: The result of calling a function that does not return
a reference is an rvalue. User defined operators are functions, and
whether such operators expect or yield lvalues is determined by their
parameter and return types.

Point 9: Class rvalues can have cv-qualified types; non-class
rvalues always have cv-unqualified types. Rvalues shall always have
complete types or the void type; in addition to these types, lvalues
can also have incomplete types.


-- 
           Summary: g++ misses a warning that gcc, instead, gives
           Product: gcc
           Version: 4.0.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bagnara at cs dot unipr dot it
  GCC host triplet: i686-pc-linux-gnu


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

Reply via email to