[Bug c++/59950] New: Bogus diagnostic "taking address of temporary" taking address of trivial no-op assignment to temporary

richard-gccbugzilla at metafoo dot co.uk gcc-bugzilla@gcc.gnu.org
Sun Jan 26 19:40:00 GMT 2014


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

            Bug ID: 59950
           Summary: Bogus diagnostic "taking address of temporary" taking
                    address of trivial no-op assignment to temporary
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: richard-gccbugzilla at metafoo dot co.uk

GCC rejects this valid code:

 struct Foo {};
 int f(Foo *p);
 int n = f(&(Foo() = Foo()));

... saying ...

<stdin>:3:27: error: taking address of temporary [-fpermissive]

The incorrect diagnostic only appears if 'Foo' is empty and its assignment
operator is defaulted. (Maybe the assignment is getting folded away before the
check is performed?)

Google ref b/12744615



More information about the Gcc-bugs mailing list