From -9105179529608889401
X-Google-Thread: f78e5,174aa7b34b06a51
X-Google-Attributes: gidf78e5,public
X-Google-Language: ENGLISH,ASCII-7-bit
Path: g2news1.google.com!news4.google.com!news.glorb.com!newsfeed.cw.net!cw.net!news-FFM2.ecrc.de!skynet.be!peer-uk.news.demon.net!kibo.news.demon.net!news.demon.co.uk!demon!stump.algebra.com!devnull
From: SeeWebsiteForEmail@moderncppdesign.com ("Andrei Alexandrescu (See Website For Email)")
Newsgroups: comp.std.c++
Subject: Re: Is this really unspecified behavior?
Date: Wed, 21 Dec 2005 04:02:43 GMT
Organization: Computer Science & Engineering, U of Washington, Seattle
Lines: 45
Sender: mail2news@demon.net
Approved: fjh@cs.mu.oz.au (Fergus Henderson , moderator of comp.std.c++)
Message-ID: <Irt826.1zD@beaver.cs.washington.edu>
References: <1132759176.368850.264850@g43g2000cwa.googlegroups.com> <H1phf.161529$zb5.99785@bgtnsc04-news.ops.worldnet.att.net> <1132933832.802917.153350@g14g2000cwa.googlegroups.com> <1133551647.532929.325730@z14g2000cwz.googlegroups.com> <1133583412.951239.208510@g49g2000cwa.googlegroups.com> <E1EjGBD-0005T8-00@chx400.switch.ch> <1133910546.716987.80030@g14g2000cwa.googlegroups.com> <E1EjzL6-0006ic-00@chx400.switch.ch> <0l5ep1ppfhdj5p1pcu7e4na4ub0vjajlq3@4ax.com> <"200512131507.jBDF72uC0 <IrIz47.GnJ"@bea
NNTP-Posting-Host: news.news.demon.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Trace: news.demon.co.uk 1135137786 29359 158.152.254.254 (21 Dec 2005 04:03:06 GMT)
X-Complaints-To: abuse@demon.net
NNTP-Posting-Date: Wed, 21 Dec 2005 04:03:06 +0000 (UTC)
X-Nntp-Posting-Host: parakeet.ee.washington.edu
X-Robomod: STUMP, ichudov@algebra.com (Igor Chudov)
X-User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Thunderbird/1.0.6 Mnenhy/0.7.2.0
X-Accept-Language: en-us, en
X-Virus-Scanned: amavisd-new at cs.mu.OZ.AU
X-Path: comp-std-cpp-robomod!not-for-mail
X-Received: (from fjh@localhost)
	by mulga.cs.mu.OZ.AU (8.12.10+Sun/8.12.9/Submit) id jBL42hRu001309;
	Wed, 21 Dec 2005 15:02:43 +1100 (EST)
X-Authentication-Warning: mulga.cs.mu.OZ.AU: fjh set sender to devnull@stump.algebra.com using -f
X-Newsgroups: comp.std.c++
Xref: g2news1.google.com comp.std.c++:2865

Hyman Rosen wrote:
> Andrew Koenig wrote:
>  > The arguments (and corresponding parameters) could,
>  > it seems to me, be evaluated in any order.
> 
> Only if the goal was fixing the f(auto, auto) problem and
> nothing else. But that's not the main goal, that's a side
> effect of achieving the main goal. The main goal is to make
> C++ expression evaluation a fully deterministic and defined
> process so that code is maximally portable and unambiguous,
> because there is no value in leaving some programming language
> semantics unspecified.

I agree. That brings me to another gratuitous source of problems. The 
language should finally fix the postfix ++ and -- to give a guarantee. 
As of now,

a = b++;

has undefined behavior if a and b alias the same lvalue. There's no 
particular reason for which things have to be that way anymore. The 
PDP-7 had some postincrement assembler instruction that did something 
like that, and it was very advisable to use it because it was fast. I 
don't think we still need to cling to such anachronisms. The semantics 
of postfix operator++ should be those of a function:

int & increment(int & i) {
   int old(i);
   ++i;
   return old;
}

that does the postincrement. Then, writing a = b++ would be equivalent 
to a = increment(b); which has defined semantics, and I doubt there will 
be any loss in efficiency with today's compilers.


Andrei

---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]



