home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.std.c++
- Path: sparky!uunet!news.tek.com!uw-beaver!uw-coco!nwnexus!ole!ssc!eskimo!seanews!jimad
- From: jimad@microsoft.com (Jim Adcock)
- Subject: Re: Zero-length structures and pointer comparisons
- Message-ID: <1992Nov05.182917.14657@microsoft.com>
- Date: 05 Nov 92 18:29:17 GMT
- Organization: Microsoft Corporation
- References: <1992Oct28.184135.25475@ucc.su.OZ.AU> <1992Oct30.003946.10484@microsoft.com> <1992Nov4.071814.10880@ucc.su.OZ.AU>
- Lines: 54
-
- In article <1992Nov4.071814.10880@ucc.su.OZ.AU> maxtal@extro.ucc.su.OZ.AU (John MAX Skaller) writes:
- | Yes, I see. You are saying that by upgrading the requirements
- |to a total order existing confrming programs which are not strictly
- |conforming suddenly become non-conforming and are thus broken.
-
- Yes, exactly.
-
- | Yes, I understand now I think. Leaving things 'implementation
- |defined' is then a complete barrier to ever upgrading those things
- |to be defined by the language without possibly breaking existing programs.
-
- Yes, except the word is not "possibly" but rather "probably" because
- the vast majority of programs written are written in non-portable manner
- by programmers who neither understand nor care about portability. Unfortunate,
- but true.
-
- I'm not saying that you can't ever change an "implementation defined" to
- a "language defined" -- it just that you need to understand that such changes
- are *major* changes to the language -- not *minor* changes, and you better
- be darned sure that everyone buys into the associated cost. Because a
- lot of programs are going to be suddenly busted, and a lot of compiler
- vendors are going to be solidly cursed by 100s or 1000s of customers for
- "gratuitously" changing their compilers in ways that suddenly "bust" programs
- that use to be "correct." And such customers are right -- their programs
- were "correct" -- just not strictly conforming.
-
- | It might be the case if the class used < for the purpose
- |Andrew mentioned, and was otherwise a general purpose class.
- |This makes the class (rather than the program) the thing that we want
- |to make portable, i.e. the unit of reusability.
-
- Agreed. But note that requiring strict ordering would also make this
- class non-portable non-reusable on systems using C++ OODBMSs -- because
- you can't reasonably maintain a total ordering over a DB over a series of
- complete or partial passivations/activations. Also merging/splitting DBs
- accross several computer systems becomes problematic if one assumes a total
- ordering.
-
- | I have not had access to these proceedings so know nothing
- |about previous battles. This sort of thing happens all the time here,
- |it would be good if there were better access to the proceedings,
- |as I'm sure you'll agree :-)
-
- I agree, but the battles I was referring to happened even more moons ago
- in the ANSI-C committee. The ANSI-C committee was pretty smart. Things
- left implementation-defined were hard-won compromises between two or more
- groups that couldn't agree and so agreed to not agree. Unfortunately, such
- has also got to be true of the ANSI/ISO-C++ effort. You can only standardize
- what people widely agree to. Everything else has to remain implementation
- defined. If one faction or the other was truly "correct" in their strongly
- held position, then one can only assume their compilers will ultimately win
- in the marketplace -- and maybe could be agreed upon at the C+n standardization
- effort ;-)
-
-