From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c9d5fc258548b22a X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news1.google.com!postnews.google.com!v7g2000yqh.googlegroups.com!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: How do I write directly to a memory address? Date: Wed, 9 Feb 2011 13:07:55 -0800 (PST) Organization: http://groups.google.com Message-ID: References: <67063a5b-f588-45ea-bf22-ca4ba0196ee6@l11g2000yqb.googlegroups.com> <31c357bd-c8dc-4583-a454-86d9c579e5f4@m13g2000yqb.googlegroups.com> <05a3673e-fb97-449c-94ed-1139eb085c32@x1g2000yqb.googlegroups.com> <8r86vgFc3uU1@mid.individual.net> <19fh1chm74f9.11cws0j5bckze.dlg@40tude.net> <5d9bd120-4953-4fb1-a890-27267245e954@8g2000prt.googlegroups.com> <544076dc-3357-4d8d-bfeb-7ae46a88b931@w19g2000yqa.googlegroups.com> <9bt91saw1vao$.9o7azvb4ina6$.dlg@40tude.net> <1aragtrfhwg4w$.1c1eyyf8254pw$.dlg@40tude.net> NNTP-Posting-Host: 85.1.114.19 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1297285675 24019 127.0.0.1 (9 Feb 2011 21:07:55 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 9 Feb 2011 21:07:55 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: v7g2000yqh.googlegroups.com; posting-host=85.1.114.19; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10,gzip(gfe) Xref: g2news1.google.com comp.lang.ada:17157 Date: 2011-02-09T13:07:55-08:00 List-Id: On Feb 9, 9:43=A0am, "Dmitry A. Kazakov" wrote: > >>> q.e.d. what? > > >> 1. const T /=3D T > >> 2. not (const T <: T) > > > That's of course very interesting, but does not relate to the example > > that we are discussing. > > It does, because const T is the type of the actual parameter and T is the > type of the formal parameter. No, because formal and actual are distinct objects in C. They are not related (they are assigned to each other, but this is very weak relationship), so there is no type substitution. And therefore there is no contract that might be broken. > > No. According to the C standard (6.5.2.2/4) this is *assignment*. > > Making local copies requires copy constructor. That's for sure. For sure the word "constructor" does not appear in the C standard, not even once, so I would not bet my money on this requirement. > But this is > unrelated to the substitution, which is always there when you call a > subprogram with parameters and/or results. In C you don't call a subprogram with parameters, they are assigned - you seem to try to apply the Ada terminology to C and you go nowhere with this. > Note that the assignment's implied profile is: > > =A0 =A0procedure ":=3D" (Left : in out Integer; Right : Integer); > > When J is substituted for Right there is no problem because the anonymous > types of "constant T" and "in T" are same in Ada. Cool. So what's the implied profile of the copy constructor (which is not even mentioned in the C standard) for int? How is it supposed to work? Oops. Stop applying Ada terminology to C, because this leads you to wrong conclusions. -- Maciej Sobczak * http://www.inspirel.com