Deutsch English Français Italiano |
<87jzggss6h.fsf@bsb.me.uk> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder8.news.weretis.net!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: Fri, 16 Aug 2024 11:00:54 +0100 Organization: A noiseless patient Spider Lines: 52 Message-ID: <87jzggss6h.fsf@bsb.me.uk> References: <v66eci$2qeee$1@dont-email.me> <20240711115418.00001cdf@yahoo.com> <v6oamt$2d8nn$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> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Fri, 16 Aug 2024 12:00:55 +0200 (CEST) Injection-Info: dont-email.me; posting-host="e2d864991417c23f00812fb2ef3e1b2b"; logging-data="1471185"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ON62/N3WVTMVtmxShn+/VXhUcnNRiEIA=" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:YQS3CR+uMypWMbBmBy+MTdJmGoY= sha1:nJ1qhvXgHyrNfFMTrEepO7kF/FA= X-BSB-Auth: 1.d36b7b16c4f6100b7523.20240816110054BST.87jzggss6h.fsf@bsb.me.uk Bytes: 3288 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++. 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? As I said, I don't think it's wise to look at it this way, but I am just borrowing your use of terms to try to tease out what you are getting at. -- Ben.