| Deutsch English Français Italiano |
|
<8734n1s7z8.fsf@bsb.me.uk> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ben Bacarisse <ben@bsb.me.uk>
Newsgroups: comp.lang.c
Subject: Re: technology discussion =?utf-8?Q?=E2=86=92?= does the world need
a "new" C ?
Date: Mon, 19 Aug 2024 00:54:03 +0100
Organization: A noiseless patient Spider
Lines: 56
Message-ID: <8734n1s7z8.fsf@bsb.me.uk>
References: <v66eci$2qeee$1@dont-email.me> <v6oct4$2djgq$2@dont-email.me>
<v6of96$2ekb0$1@dont-email.me> <v6ovfc$2hcpf$1@dont-email.me>
<v6p4hf$2icph$1@dont-email.me> <v6qgpu$2t6p7$3@dont-email.me>
<v6r33m$30grj$1@dont-email.me> <20240712154252.00005c2f@yahoo.com>
<86o7717jj1.fsf@linuxsc.com> <v6ti10$3gru4$1@dont-email.me>
<v78af7$1qkuf$1@dont-email.me> <20240717163457.000067bb@yahoo.com>
<v78piu$1su4u$1@dont-email.me> <86a5hep45h.fsf@linuxsc.com>
<v9ktep$v5sk$1@dont-email.me> <87y14xsvnh.fsf@bsb.me.uk>
<v9l95b$10ogv$1@dont-email.me> <87sev5s51s.fsf@bsb.me.uk>
<v9n6uj$1cvvg$2@dont-email.me> <87jzggss6h.fsf@bsb.me.uk>
<v9nns5$1f74j$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Mon, 19 Aug 2024 01:54:03 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="153c0803c54c022691c586705843dea6";
logging-data="2706798"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/6pmgfkYNPWKafaSixj6GIC7L658Od4lE="
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:GeQKX89aIgohaGM7JreWXn5Sfo0=
sha1:blC8tqiI4AEqYh2/jSFpvCXfNKE=
X-BSB-Auth: 1.46e24e9eb2811020452c.20240819005403BST.8734n1s7z8.fsf@bsb.me.uk
Bytes: 3789
David Brown <david.brown@hesbynett.no> writes:
> On 16/08/2024 12:00, Ben Bacarisse wrote:
>> David Brown <david.brown@hesbynett.no> writes:
>>
>>> On 16/08/2024 02:08, Ben Bacarisse wrote:
>>>> Bart <bc@freeuk.com> writes:
>>
>>>>> In general there is no reason, in a language with true call-by-reference,
>>>>> why any parameter type T (which has the form U*, a pointer to anything),
>>>>> cannot be passed by reference. It doesn't matter whether U is an array type
>>>>> or not.
>>>> I can't unravel this. Take, as a concrete example, C++. You can't pass
>>>> a pointer to function that takes an array passed by reference. You can,
>>>> of course, pass a pointer by reference, but that is neither here nor
>>>> there.
>>>
>>> In C++, you can't pass arrays as parameters at all - the language inherited
>>> C's handling of arrays. You can, of course, pass objects of std::array<>
>>> type by value or by reference, just like any other class types.
>> The best way to think about C++ (in my very non-expert opinion) is to
>> consider references as values that are passed by, err..., value. But
>> you seem prepared to accept that some things can be "passed by reference"
>> in C++.
>
> That seems a subtle distinction - I'll have to think about it a little. I
> like your description of arguments being like local variable initialisation
> - it makes sense equally well regardless of whether the parameter is "int",
> "int*", or "int&". (It's probably best not to mention the other one in
> this group...)
>
>> So if this:
>> #include <iostream>
>> void g(int &i) { std::cout << i << "\n"; }
>> int main(void)
>> {
>> int I{0};
>> g(I);
>> }
>> shows an int object, I, being passed to g, why does this
>> #include <iostream>
>> void f(int (&ar)[10]) { std::cout << sizeof ar << "\n"; }
>> int main(void)
>> {
>> int A[10];
>> f(A);
>> }
>> not show an array, A, being passed to f?
>
> That's backwards compatibility with C array handling at play.
I'm not sure how this answers my question. Maybe you weren't answering
it and were just making a remark...
--
Ben.