Boost logo

Boost Users :

Subject: Re: [Boost-users] hash<pair<...
From: Anthony Foglia (AFoglia_at_[hidden])
Date: 2009-09-17 18:02:17


John Dlugosz wrote:
> I just moved a project that was using VC8, with TR1 supplied via
> BOOST, to VC9 with its own TR1 implementation.
>
> I was surprised that a unordered_map failed to compile with a great
> deal of verboseness because it didn't like my key type. I used a
> pair of two primitive types as the key. Boost took that just fine.
>
> But looking at the current Boost documentation for the hash object,
> (<http://www.boost.org/doc/libs/1_40_0/doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.hash>)
> I see that the hash specializations include primitive types, strings,
> but not tuples.
>
> Is this something that changed between Boost 1_38 and 1_40, or an
> undocumented extension, or what? Why would the standard leave out
> that, when everyone and his neighbor will just supply their own
> generic definition. That is, is there a good reason for not doing
> it?

I think the issue is that TR1 does not (as of yet) require hash for
pairs. Boost does have a hash function that works on pairs, in
Functional/Hash, and that's the default hash used by Boost's unordered
map, but since they aren't part of TR1, they're not included in the TR1
namespace. The Functional/Hash documentation links to a working group
document which mentions this among other issues with TR1 (as then proposed).

http://www.boost.org/doc/libs/1_40_0/doc/html/hash.html

The document is four years old though. Someone more up on the C++0x
development can tell you more, and what the current status is.

-- 
Anthony Foglia
Princeton Consultants
(609) 987-8787 x233

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net