Re: POD Class
* Thomas Richter:
Jerry Coffin wrote:
...with one minor sort-of exception (albeit, one that doesn't apply in
this case): "For templates greater, less, greater_equal, and less_equal,
the specializations for any pointer type yield a total order, even if
the built-in operators <, >, <=, >= do not." ($20.3.3/8)
Huh, that's wierd... What's the rationale to make "greater" more
powerful than the built-in operators? I suppose that's only relevant for
architectures where we need "far" or "near" pointers and cannot compare
pointers that point to "different segments" by the built-in operations.
But why are then the template specalizations required to be more powerful?
Nothing weird about it. Consider
std::map<T*, string> names;
The collection needs to sort on the pointer values to provide fast
access and support consistent "sorted order" iteration. To do that it
needs a total ordering for arbitrary pointer values. Or else it would
be limited to pointers pointing within the same array.
The built-in comparisions need to be fast. So, in keeping with the
principle that you don't pay for what you don't use, the possibly slower
but more general comparision operators are library functors. The
standard library implementation can do whatever magic is needed.
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]