On Tue, 12 Jul 2022 at 11:22, Florian Weimer via Gcc <gcc@gcc.gnu.org> 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. > > 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.
A fairly common idiom is for the type to define the typedef itself: struct pending_diagnostic { using ptr = std::unique_ptr<pending_diagnostic>; // ... }; Then you use pending_diagnostic::ptr. If you want a custom deleter for the type, you add it to the typedef. Use a more descriptive name like uptr or uniq_ptr instead of "ptr" if you prefer.