|
Boost : |
From: John Maddock (john_at_[hidden])
Date: 2005-03-13 05:57:16
> 1) use reinterpret_cast<> as I proposed, but documenting that it will
> produce a viable hash function only if the underlying implementation
> satisfy certain requirements (each specific implementation /should/
> document the behaviour of reinterpret_cast anyway, so the user may able to
> check)
>
> 2) provide the hash function (with reintepret_cast<>) only for those
> platforms that we are able to check in advance that will satisfy those
> requirements and make any use of such function produce a static assert for
> all other platforms
>
> 3) do not provide a hash function for pointers at all
>
> I would vote for 1, but 2 and 3 also make sense. Is there a fourth choice?
I would also go with (1), and probably a cast to ptrdiff_t is sufficient
(rather than int_max_t).
There is a forth option: treat the pointer as a "bag of bytes" and hash
those bytes, that's completely portable, and no reinterpret_cast is required
(it's probably overkill as well)
John.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk