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: g2news2.google.com!postnews.google.com!o39g2000prb.googlegroups.com!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: How do I write directly to a memory address? Date: Mon, 7 Feb 2011 15:11:23 -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> NNTP-Posting-Host: 81.62.25.110 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1297120283 1744 127.0.0.1 (7 Feb 2011 23:11:23 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 7 Feb 2011 23:11:23 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: o39g2000prb.googlegroups.com; posting-host=81.62.25.110; 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: g2news2.google.com comp.lang.ada:17927 Date: 2011-02-07T15:11:23-08:00 List-Id: On Feb 7, 10:24=A0am, "Dmitry A. Kazakov" wrote: > > The contract is not broken. The function cannot modify the original > > value that is passed by copy (this being the very nature of "copy") > > and the caller cannot even reason about what happens behind the > > signature. > > It is broken because const T is not substitutable for T. Mutators of the > type T are not operations of const T. q.e.d. q.e.d. what? I have an impression that we are (again) in the mode where you bring arbitrarily twisted definitions in order to prove your point. What contract is broken? Why do you want to substitute one type by another? These are not generics, nor other type-dependent constructs, so type substitutions are out of the picture. Or (because I have no idea what is your point, so I'm guessing), you can easily use const T to provide the actual value for the parameter of T: void foo(int i); and then: const int j =3D 7; foo(j); Type substitution does not happen here. The types interact by means of initialization, but this interaction has nothing to do with substitution. So, no contract is broken. (q.e.d.?) Unless, of course, you have meant something else. -- Maciej Sobczak * http://www.inspirel.com