public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@palves.net>
To: Florian Weimer <fweimer@redhat.com>
Cc: David Malcolm <dmalcolm@redhat.com>, gcc@gcc.gnu.org
Subject: Re: [RFC] Using std::unique_ptr and std::make_unique in our code
Date: Tue, 12 Jul 2022 12:00:32 +0100	[thread overview]
Message-ID: <8b686947-1b7e-4380-8ed8-9b05517b75dc@palves.net> (raw)
In-Reply-To: <87zgheskap.fsf@oldenburg.str.redhat.com>

On 2022-07-12 11:21 a.m., Florian Weimer wrote:
> * Pedro Alves:
> 
>> For example, for the type above, we'd have:
>>
>>   typedef std::unique_ptr<pending_diagnostic> pending_diagnostic_up;
>>
>> and then:
>>
>>  -				    pending_diagnostic *d,
>>  +				    pending_diagnostic_up d,
>>
>> I would suggest GCC have a similar guideline, before people start
>> using foo_ptr, bar_unp, quux_p, whatnot diverging styles.
> 
> This doesn't seem to provide much benefit over writing
> 
>   uP<pending_diagnostic> d;
> 
> and with that construct, you don't need to worry about the actual
> relationship between pending_diagnostic and pending_diagnostic_up.

Given the guideline, nobody ever worries about that.  When you see "_up",
you just know it's a unique pointer.

And as you point out, there's the custom deleters case to consider too.

> 
> I think the GDB situation is different because many of the types do not
> have proper destructors, so std::unique_ptr needs a custom deleter.

Yes, there are a few cases like but it's not "many" as you suggest,
and most are types for which we have no control, like 3rd party library
types, like debuginfod, curses, python.  Most of the rest of the custom deleter cases
are instead because of intrusive refcounting.  I.e., the deleter decrements the
object's refcount, instead of deleting the object straight away.

These are valid cases, not "GDB is doing it wrong, so GCC won't have to
bother".  I would suspect that GCC will end up with a good number of
custom deleters as well.

      parent reply	other threads:[~2022-07-12 11:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-08 20:46 David Malcolm
2022-07-08 21:15 ` Gabriel Ravier
2022-07-08 21:16 ` Jonathan Wakely
2022-07-11 10:56 ` Pedro Alves
2022-07-12  0:32   ` David Malcolm
2022-08-10  1:15     ` James K. Lowden
2022-07-12 10:21   ` Florian Weimer
2022-07-12 10:45     ` Jonathan Wakely
2022-07-12 11:01       ` Pedro Alves
2022-07-12 11:00     ` Pedro Alves [this message]

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=8b686947-1b7e-4380-8ed8-9b05517b75dc@palves.net \
    --to=pedro@palves.net \
    --cc=dmalcolm@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=gcc@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).