http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59950
--- Comment #1 from Richard Smith <richard-gccbugzilla at metafoo dot co.uk> --- Additional clarification was requested: "Foo() = Foo()" means "Foo().operator=(Foo())". The 'operator=' has return type 'Foo&', thus that expression is not a temporary.