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=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,4608b6f4718e680f X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.68.241.7 with SMTP id we7mr770830pbc.4.1337062165475; Mon, 14 May 2012 23:09:25 -0700 (PDT) MIME-Version: 1.0 Path: pr3ni415pbb.0!nntp.google.com!news2.google.com!goblin1!goblin.stu.neva.ru!nuzba.szn.dk!news.jacob-sparre.dk!munin.jacob-sparre.dk!pnx.dk!.POSTED!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Problem in "X (1).Re := X (1).Re + 1" Date: Tue, 15 May 2012 01:09:18 -0500 Organization: Jacob Sparre Andersen Research & Innovation Message-ID: References: <13177506.38.1336222539273.JavaMail.geo-discussion-forums@pbtg6> <21452734.731.1336405064187.JavaMail.geo-discussion-forums@ynbv35> <5749033.1275.1336416838264.JavaMail.geo-discussion-forums@pbchd7> <10294366.7.1336426132700.JavaMail.geo-discussion-forums@yngg23> <5209872.2691.1336497260879.JavaMail.geo-discussion-forums@ynlq12> <30097103.0.1336555778034.JavaMail.geo-discussion-forums@pbcow8> <16249910.1154.1336624012153.JavaMail.geo-discussion-forums@pbyy9> NNTP-Posting-Host: static-69-95-181-76.mad.choiceone.net X-Trace: munin.nbi.dk 1337062163 20805 69.95.181.76 (15 May 2012 06:09:23 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Tue, 15 May 2012 06:09:23 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 Date: 2012-05-15T01:09:18-05:00 List-Id: "ytomino" wrote in message news:16249910.1154.1336624012153.JavaMail.geo-discussion-forums@pbyy9... > On Thursday, May 10, 2012 9:58:04 AM UTC+9, Randy Brukardt wrote: >> >> This reminds me of something I forgot: The beauty of >> Constant_Reference/Reference in the standard containers is that there >> cannot >> be a dangling pointer (assuming no Unchecked programming is involved). >> These >> are tampering events so long as the pointer still exists, and thus is it >> impossible to modify the container (attempts to do so will raise >> Program_Error). > > I agree, generally. > > Only in the cases of my and Adam's sample code, we have hoped that they > work through >with reference-counting or no reference-counting. So any exceptions are >unsuitable. "Unsuitable"? Doing dangerous things ought to be prevented; that's the point of the exceptions. And keeping uncontrolled pointers into a container that might be modified is one of those dangerous things. It took a *lot* of convincing that it could be possible to safely allow pointers at container elements. Also note that not all container modifications are prevented, mostly ones that would cause trouble (although this is rather conservative). Obviously, you can write your own container that allows any unsafe things you want, but that's not possible with the Standard containers. Randy.