public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: bangerth@dealii.org
To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, lgandhi@peerless.com,
	nobody@gcc.gnu.org
Subject: Re: c++/8910: Incorrect code generation when returning class by value
Date: Thu, 12 Dec 2002 07:27:00 -0000	[thread overview]
Message-ID: <20021212152745.27646.qmail@sources.redhat.com> (raw)

Synopsis: Incorrect code generation when returning class by value

State-Changed-From-To: open->closed
State-Changed-By: bangerth
State-Changed-When: Thu Dec 12 07:27:45 2002
State-Changed-Why:
    This is not a bug. In your conversion operator, you
    generate an unnamed object B(1234), which will then be
    assigned to the return value. However, you made the copy 
    constructor of B explicit. The standard says:
    
    An explicit constructor constructs objects just like non-explicit con-
      structors,  but  does  so  only where the direct-initialization syntax
      (_dcl.init_) or  where  casts  (_expr.static.cast_,  _expr.cast_)  are
      explicitly  used.
    
    Assigning to the return value does not happen with an
    explicit syntax, so the copy constructor cannot be used.
    
    That's it. The rest is just that gcc finds a conversion
    sequence that does what you want. Upshot: when you declare
    a class with an "explicit" copy constructor, you may not
    use it as a return value for functions that return by
    value (rather than by reference, for example).

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8910


             reply	other threads:[~2002-12-12 15:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-12  7:27 bangerth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-12-11 19:16 lgandhi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021212152745.27646.qmail@sources.redhat.com \
    --to=bangerth@dealii.org \
    --cc=gcc-bugs@gcc.gnu.org \
    --cc=gcc-gnats@gcc.gnu.org \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=lgandhi@peerless.com \
    --cc=nobody@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).