Article View: comp.std.c++
Article #1275Re: Zero-length structures and pointer comparisons
From: Fergus James HENDERSON
Date: Thu, 17 Dec 1992 04:43
Date: Thu, 17 Dec 1992 04:43
42 lines
2739 bytes
2739 bytes
jimad@microsoft.com (Jim Adcock) writes: >I think some flavor of "ptrcmp" makes sense on those implementations that >support casting pointers to integrals and back, and probably doesn't make >sense on those implementations that don't support the pointer/integral casts. > >In either case, I would ask what kind of sense it makes to write a "standard" >that *requires* a certain behavior of *some* implementation but doesn't >*require* that behavior of *all* implementations? How do you justify such >a dichotomy? ptrcmp() is intended to be universal, ie. required of *all* implementations. >Such would be the proper designation, IMHO, for both the bidi pointer/integral >cast, and for the proposed "ptrcmp" macro. Then, on Lisp machines, or >C++ OODBMS's or whatever systens would find the total ordering >practically unsupportable in their environment [...] Why would ptrcmp() be practically unsupportable in these environments? OODBMS's maintain an object identity for each object, so it should be possible to base a total ordering on this object identity. I don't see the problems. What makes it difficult for Lisp machines? Are efficient BTrees and such-like genuinely impossible on such machines? >In any case, "ptrcmp" would be a misnomer, because what is being compared >is *not* pointers, but rather the underlying *assumed* implementation of >pointers using machine addresses. The correct name might be something like >"addrcmp" then, so as to not further confuse programmers on the difference >between language and implementation. The function should be named after its interface, not its implementation. The function takes two (void *) _pointers_, and returns an integer which is meant to be a comparison of those pointers according to some total ordering. Whether it is implemented by comparing addresses or by sending mail to the Usenet Oracle and waiting for a reply is not relevant. -- Fergus Henderson fjh@munta.cs.mu.OZ.AU This .signature virus is a self-referential statement that is true - but you will only be able to consistently believe it if you copy it to your own .signature file!
Technical Details
Message-ID:
<9235215.11144@mulga.cs.mu.OZ.AU>Path:
arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!cs.mu.OZ.AU!munta.cs.mu.OZ.AU!fjhReferences:
<1992Dec8.173855.18153@meaddata.com> <1992Dec9.075125.22405@lth.se> <1992Dec12.154918.2220@ucc.su.OZ.AU> <1992Dec14.225659.24225@microsoft.com>Show Full Headers
Complete Article Headers
Newsgroups: comp.std.c++ Path: arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!cs.mu.OZ.AU!munta.cs.mu.OZ.AU!fjh From: fjh@munta.cs.mu.OZ.AU (Fergus James HENDERSON) Subject: Re: Zero-length structures and pointer comparisons Message-ID: <9235215.11144@mulga.cs.mu.OZ.AU> Sender: news@cs.mu.OZ.AU Organization: Computer Science, University of Melbourne, Australia References: <1992Dec8.173855.18153@meaddata.com> <1992Dec9.075125.22405@lth.se> <1992Dec12.154918.2220@ucc.su.OZ.AU> <1992Dec14.225659.24225@microsoft.com> Date: Thu, 17 Dec 1992 04:43:04 GMT Lines: 42