This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Pointers vs references for out and inout parameters
- From: Simon Marchi <simon dot marchi at polymtl dot ca>
- To: gdb-patches at sourceware dot org
- Date: Sun, 20 May 2018 20:06:46 -0400
- Subject: Re: Pointers vs references for out and inout parameters
- References: <b31a374788e2b6067786fb8c6c0a3acc@polymtl.ca>
On 2018-03-06 09:47 AM, Simon Marchi wrote:
> When writing a function that modifies an object, we have two
> possibility:
>
> declaration: void do_something (object &obj);
> call: do_something (obj);
>
> or
>
> declaration: void do_something (object *obj);
> call: do_something (&obj);
>
> I don't think we ever ruled on which we preferred, and sometimes it's
> ambiguous during reviews which one we should use. When reviewing one of
> Tom's patches a while ago, I suggested he uses a reference instead of a
> pointer. His rationale for using a pointer was that it makes it more
> obvious at the call site that the object is going to be modified.
>
> The Google C++ style guide forbids non-const reference arguments, pretty
> much for this reason [1], I think it makes sense.
>
> I would suggest to add it to our C++ coding standards wiki page [2].
>
> Any objection?
>
> [1]
> https://google.github.io/styleguide/cppguide.html#Reference_Arguments
> [2]
> https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#C.2B-.2B-_Usage
>
> Simon
>
I interpret the silence as an agreement :), so I have now done this.
https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Avoid_non-const_reference_parameters.2C_use_pointers_instead
Simon