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#bo...) 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