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.