Path: csiph.com!news.mixmin.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c++
Subject: Re: Is this safe?
Date: Tue, 04 Apr 2023 23:28:55 -0700
Organization: A noiseless patient Spider
Lines: 41
Message-ID: <86355e7sgo.fsf@linuxsc.com>
References: <86k009bqyu.fsf@linuxsc.com> <87pma1pqlh.fsf@nosuchdomain.example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: dont-email.me; posting-host="3e40893fec19eeb2f5d61a30b72606e6"; logging-data="3994189"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19M9Bn02f00NLHsk8ttWXQQzpKpv2p2epo="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:4OxIlrxrkuJoXdFTRh1xiV6BvCA= sha1:z4RGPoRJACDAVXwNcqXqyPG0img=
Xref: csiph.com comp.lang.c++:89916
Keith Thompson writes:
> Tim Rentsch writes:
>
>> Andrey Tarasevich writes:
>>
>>> On 02/21/23 6:12 AM, Alf P. Steinbach wrote:
>>>
>>>> Not what you're asking, but the common convention in C++ is to
>>>> separate the type specification from the variable, i.e. `auto& c`
>>>> not `auto &c`.
>>>>
>>>> But on the third and gripping hand, in this case I'd write `char&
>>>> c`, since there's no advantage in `auto` here and it obscures
>>>> things.
>>>
>>> Not really. This is a misleading "convention" that has no reason to
>>> exist. In this case the `&` is a part of an individual declarator,
>>> not a part of decl-specifier-seq. There's no reason to group the
>>> syntactic elements differently. It achieves nothing.
>>
>> I would say it achieves less than nothing, because it's misleading.
>> It's like writing a+b * c ; the grouping suggested by the spacing
>> doesn't match the actual precedence. In almost all cases it's a
>> mistake to use "contra-syntactic" spacing, and attaching '&' or '*'
>> to a type specifier is definitely one of those mistakes.
>
> I prefer the "int *foo;" spacing (conventional in C) because it follows
> the syntax, but the "int* foo;" spacing has become a convention in C++
> (probably because Stroustrup uses it in his books), and I use it in C++
> for that reason. I also avoid declarations where it would make a
> difference to a human reader, like "int* foo, bar;".
>
> Most development is on existing code. It would be poor practice to use
> the "better" spacing on new code while leaving the existing code (which
> most likely uses the C++ conventional spacing) as it is. It would also
> be poor practice to change all the spacing in a large body of existing
> code.
I'm sure there are lots of people who agree with that opinion,
but that doesn't make it anything more than just an opinion.