Newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng
Path: cantaloupe.srv.cs.cmu.edu!rochester!cornellcs!newsstand.cit.cornell.edu!newstand.syr.edu!news.maxwell.syr.edu!news.bbnplanet.com!cpk-news-hub1.bbnplanet.com!news.sprintlink.net!news-peer.sprintlink.net!howland.erols.net!vixen.cso.uiuc.edu!uchinews!cbgw2.lucent.com!nntphub.cb.lucent.com!alice!allegra!akalice!ark
From: ark@research.att.com (Andrew Koenig)
Subject: Re: OO, C++, and something much better!
Message-ID: <E4B9zD.II0@research.att.com>
Organization: AT&T Research, Murray Hill NJ
References: <E3rr9G.989@thomsoft.com> <dewar.852928982@merv> <5bie2d$eat$1@news.nyu.edu>
Date: Mon, 20 Jan 1997 14:38:01 GMT
Lines: 38
Xref: glinda.oz.cs.cmu.edu comp.lang.c++:242709 comp.lang.smalltalk:49872 comp.lang.eiffel:17632 comp.lang.ada:56393 comp.object:60249 comp.software-eng:52925

In article <5bie2d$eat$1@news.nyu.edu> kenner@lab.ultra.nyu.edu (Richard Kenner) writes:

> In article <dewar.852928982@merv> dewar@merv.cs.nyu.edu (Robert Dewar) writes:

> >equally if you do something like

> >   (x = p; x < &p[10]; p += 3)

> >you can find you have an infinite loop, all quite in accordance with the
> >C semantics, although somewhat surprising.

> This case must work.  Such a reference to the end of an object is required
> to be treated like a reference within the object.

I haven't seen the original of this, but the fragment above appears
to contain at least three mistakes (not counting the missing `for'
as a mistake):

	1. It probably should have said `x += 3' instead of `p += 3';
	   as it is, the loop will just keep incrementing p until something
	   dire happens.

	2. If we change `x += 3' to `p += 3,' it still won't work,
	   because p will take on the value of &x[9], and then
	   &x[12], which is undefined, assuming that p has 10 elements.

	3. If p is indeed the name of a 10-element array, then
	   &p[10] is undefined in C.  Really!  The reason is that
	   it is defined as equivalent to *(p+10), and, although it
	   is legal to create p+10, the effect of dereferencing it
	   is undefined.  So, formally speaking, &p[10] is supposed
	   to be written as p+10.

I hope I haven't derailed the discussion too much.
-- 
				--Andrew Koenig
				  ark@research.att.com
				  http://www.research.att.com/info/ark
