> Well, I think it's in direct conflict with the C++ standard. If "X" is > a 32-bit pointer type, and "x" is a value of type X, "Y" is a 16-bit > pointer type, then: > > (X*)(Y*)x > > is supposed to get you back the value of "x", but I don't see how that > can work, in general.
Where in the standard does it say that? I could only find references to conversions to base classes. Plus, Borland C++ has had multiple sized pointers since the 80's. > You only need two classes of pointers if you expect people to use > the second class in non-trivial expressions, i.e., dereference them, > perform pointer arithmetic on them, etc. Like the m16c, which lets you put additional less-frequently used data in function memory? Perhaps, a table of strings, or some CRC lookups?