This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Update coding conventions to restrict use of non-const references


On Thu, Jul 12, 2018 at 1:41 PM Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
>
> On Thu, 12 Jul 2018 at 11:41, Richard Sandiford wrote:
> > +Only use non-constant references in the following situations:
> > +</p>
> > +
> > +<ul>
> > +<li>when they are necessary to conform to a standard interface, such as
> > +the first argument to a non-member <code>operator+=</code></li>
>
> And the return value of such operators (which also applies to member
> operators, which is the more conventional way to write compound
> assignment operators).
>
> > +<li>in a return value, when providing access to something that is known
> > +to be nonnull</li>
> > +</ul>
> > +
> > +<p>
> > +In other situations the convention is to use pointers instead.
> > +</p>
> > +
> > +<blockquote>
> > +<pre><code>HOST_WIDE_INT do_arith (..., bool *overflow);   // OK
> > +HOST_WIDE_INT do_arith (..., bool &amp;overflow);   // Please avoid
>
> I understand the objection to using references for out parameters (an
> alternative to pointers is to return a struct with the wide int result
> and the overflow flag), but ...

Putting everything in a new struct is just going through more hoops to
avoid a common language idiom that everyone in C++ is used to.

>
> > +int *elt = &amp;array[i];  // OK
> > +int &amp;elt = array[i];   // Please avoid
>
> ... this seems unnecessary. If the function is so long that the fact
> elt is a reference can easily get lost, the problem is the length of
> the function, not the use of a reference.

Agreed.

Richard (Sandiford), this really looks like going out of your way to
enforce a personal style issue across the entire code base.  It's sad
that we try to come up with new ways to make it even harder for new
developers to contribute to GCC.

Aldy


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]