This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/21672] Loses temporary in complex expression
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 May 2005 23:19:42 -0000
- Subject: [Bug c++/21672] Loses temporary in complex expression
- References: <20050519212022.21672.igodard@pacbell.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-05-19 23:19 -------
(In reply to comment #4)
> but apparently the warning logic overlooks the same problem when returning
> arguments.
Actually it cannot know and here is why,
take the following example:
template<class T> const
T& operator |(T t1, const T& t2) { return t1 |= t2; }
struct f{ f &operator|=(const f&);};
f i;
f j;
f h = i | j;
We call |= which it self returns a reference so there is no way to the compiler to know it is actually
returning a local variable or not.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21672