mirror of
https://github.com/boostorg/unordered.git
synced 2025-05-09 23:23:59 +00:00
Import latest changes to the unordered containers. Includes:
Copyright update. Switch back to the version where the sentinel points to itself. Remove alternative versions of swap. Workaround a borland bug or two. More consistent use of class/swap/template. Avoid a few warnings. Add a no-throw swap to the allocator for exception testing. [SVN r3793]
This commit is contained in:
parent
8d31c94d9a
commit
df1e1598a5
@ -1,3 +1,7 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[section:buckets The Data Structure]
|
[section:buckets The Data Structure]
|
||||||
|
|
||||||
The containers are made up of a number of 'buckets', each of which can contain
|
The containers are made up of a number of 'buckets', each of which can contain
|
||||||
@ -6,7 +10,7 @@ boost::unordered_set unordered_set] with 7 buckets containing 5 elements, `A`,
|
|||||||
`B`, `C`, `D` and `E` (this is just for illustration, in practise containers
|
`B`, `C`, `D` and `E` (this is just for illustration, in practise containers
|
||||||
will have more buckets).
|
will have more buckets).
|
||||||
|
|
||||||
[$../diagrams/buckets.png]
|
[$../../libs/unordered/doc/diagrams/buckets.png]
|
||||||
|
|
||||||
In order to decide which bucket to place an element in, the container applies
|
In order to decide which bucket to place an element in, the container applies
|
||||||
`Hash` to the element's key (for `unordered_set` and `unordered_multiset` the
|
`Hash` to the element's key (for `unordered_set` and `unordered_multiset` the
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[section:comparison Comparison with Associative Containers]
|
[section:comparison Comparison with Associative Containers]
|
||||||
|
|
||||||
[table Interface differences.
|
[table Interface differences.
|
||||||
@ -10,7 +14,10 @@
|
|||||||
]
|
]
|
||||||
[
|
[
|
||||||
[`Compare` exposed by member typedef `key_compare`, accessed by member function `key_comp()`]
|
[`Compare` exposed by member typedef `key_compare`, accessed by member function `key_comp()`]
|
||||||
[`Hash` exposed by member typedef `hasher`, accessed by member function `hash_function()`.\n`Pred` by member typedef `key_equal` and member function `key_eq()`.]
|
[
|
||||||
|
`Hash` exposed by member typedef `hasher`, accessed by member function `hash_function()`.
|
||||||
|
|
||||||
|
`Pred` by member typedef `key_equal` and member function `key_eq()`.]
|
||||||
]
|
]
|
||||||
[
|
[
|
||||||
[Member typedef `value_compare` supplies an ordering comparison for member elements, accessed by member function `value_comp()`.]
|
[Member typedef `value_compare` supplies an ordering comparison for member elements, accessed by member function `value_comp()`.]
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[section:hash_equality Equality Predicates and Hash Functions]
|
[section:hash_equality Equality Predicates and Hash Functions]
|
||||||
|
|
||||||
[/TODO: A better introduction to hash functions?]
|
[/TODO: A better introduction to hash functions?]
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[def __tr1__
|
[def __tr1__
|
||||||
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2009.pdf
|
[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2009.pdf
|
||||||
C++ Standard Library Technical Report]]
|
C++ Standard Library Technical Report]]
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[def __wang__
|
[def __wang__
|
||||||
[@http://www.concentric.net/~Ttwang/tech/inthash.htm
|
[@http://www.concentric.net/~Ttwang/tech/inthash.htm
|
||||||
Thomas Wang's article on integer hash functions]]
|
Thomas Wang's article on integer hash functions]]
|
||||||
@ -96,14 +100,11 @@ Need to look into this one.
|
|||||||
[h3 [@http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#431
|
[h3 [@http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#431
|
||||||
431. Swapping containers with unequal allocators]]
|
431. Swapping containers with unequal allocators]]
|
||||||
|
|
||||||
In a fit of probably unwise enthusiasm, I implemented all the three versions
|
I'm following Howard Hinnant's advice and implement option 3.
|
||||||
with a macro (BOOST_UNORDERED_SWAP_METHOD) to pick which one is used. As
|
|
||||||
suggested by Howard Hinnant, I set option 3 as the default. I'll probably
|
|
||||||
remove the alternative implementations before review.
|
|
||||||
|
|
||||||
There is currently a further issue - if the allocator's swap does throw there's
|
There is currently a further issue - if the allocator's swap does throw there's
|
||||||
no guarantee what state the allocators will be in. The only solution seems to
|
no guarantee what state the allocators will be in. The only solution seems to
|
||||||
be to double buffer the allocators.
|
be to double buffer the allocators. But I'm assuming that it won't throw for now.
|
||||||
|
|
||||||
[h3 [@http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#518
|
[h3 [@http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#518
|
||||||
518. Are insert and erase stable for unordered_multiset and unordered_multimap?]]
|
518. Are insert and erase stable for unordered_multiset and unordered_multimap?]]
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
<!--
|
||||||
|
Copyright Daniel James 2006-2007
|
||||||
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
-->
|
||||||
|
|
||||||
<library-reference>
|
<library-reference>
|
||||||
<!--
|
<!--
|
||||||
Header: <boost/unordered_set.hpp>
|
Header: <boost/unordered_set.hpp>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
|
[/ Copyright 2006-2007 Daniel James.
|
||||||
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ]
|
||||||
|
|
||||||
[library Unordered Associative Containers
|
[library Unordered Associative Containers
|
||||||
[quickbook 1.3]
|
[quickbook 1.3]
|
||||||
[authors [Maitin-Shepard, Jeremy B.], [James, Daniel]]
|
[authors [Maitin-Shepard, Jeremy B.], [James, Daniel]]
|
||||||
[copyright 2005 2006 Daniel James]
|
[copyright 2005 2007 Daniel James]
|
||||||
[purpose std::tr1 compliant hash containers]
|
[purpose std::tr1 compliant hash containers]
|
||||||
[id unordered]
|
[id unordered]
|
||||||
[dirname unordered]
|
[dirname unordered]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2006 Daniel James
|
// Copyright (C) 2005-2007 Daniel James
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -33,15 +33,6 @@
|
|||||||
|
|
||||||
#include <boost/mpl/aux_/config/eti.hpp>
|
#include <boost/mpl/aux_/config/eti.hpp>
|
||||||
|
|
||||||
// See hash_table::swap() for details about this.
|
|
||||||
#if !defined(BOOST_UNORDERED_SWAP_METHOD)
|
|
||||||
#define BOOST_UNORDERED_SWAP_METHOD 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BOOST_UNORDERED_SWAP_METHOD == 1
|
|
||||||
#include <stdexcept>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
|
#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
|
||||||
#define BOOST_HASH_BORLAND_BOOL(x) (bool)(x)
|
#define BOOST_HASH_BORLAND_BOOL(x) (bool)(x)
|
||||||
#else
|
#else
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2006 Daniel James.
|
// Copyright (C) 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
||||||
// Copyright (C) 2005-2006 Daniel James.
|
// Copyright (C) 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# Copyright 2006 Daniel James.
|
# Copyright 2006-2007 Daniel James.
|
||||||
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# Copyright 2006 Daniel James.
|
# Copyright 2006-2007 Daniel James.
|
||||||
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -22,9 +22,5 @@ test-suite unordered-tests
|
|||||||
[ run erase_tests.cpp framework ]
|
[ run erase_tests.cpp framework ]
|
||||||
[ run rehash_tests.cpp framework ]
|
[ run rehash_tests.cpp framework ]
|
||||||
[ run swap_tests.cpp framework : : :
|
[ run swap_tests.cpp framework : : :
|
||||||
<define>BOOST_UNORDERED_SWAP_METHOD=1 : swap_tests1 ]
|
<define>BOOST_UNORDERED_SWAP_METHOD=3 ]
|
||||||
[ run swap_tests.cpp framework : : :
|
|
||||||
<define>BOOST_UNORDERED_SWAP_METHOD=2 : swap_tests2 ]
|
|
||||||
[ run swap_tests.cpp framework : : :
|
|
||||||
<define>BOOST_UNORDERED_SWAP_METHOD=3 : swap_tests3 ]
|
|
||||||
;
|
;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2005-2006 Daniel James.
|
// Copyright 2005-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -661,6 +661,11 @@ namespace exception
|
|||||||
}
|
}
|
||||||
return (std::numeric_limits<std::size_t>::max)();
|
return (std::numeric_limits<std::size_t>::max)();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
friend void swap(allocator<T>& x, allocator<T>& y)
|
||||||
|
{
|
||||||
|
std::swap(x.tag_, y.tag_);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// It's pretty much impossible to write a compliant swap when these
|
// It's pretty much impossible to write a compliant swap when these
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace minimal
|
|||||||
class hash
|
class hash
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static hash create() { return hash(); }
|
static hash create() { return hash<T>(); }
|
||||||
hash() {}
|
hash() {}
|
||||||
hash(hash const&) {}
|
hash(hash const&) {}
|
||||||
hash& operator=(hash const&) { return *this; }
|
hash& operator=(hash const&) { return *this; }
|
||||||
@ -59,13 +59,13 @@ namespace minimal
|
|||||||
class equal_to
|
class equal_to
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static equal_to create() { return equal_to(); }
|
static equal_to create() { return equal_to<T>(); }
|
||||||
equal_to() {}
|
equal_to() {}
|
||||||
equal_to(equal_to const&) {}
|
equal_to(equal_to const&) {}
|
||||||
equal_to& operator=(equal_to const&) { return *this; }
|
equal_to& operator=(equal_to const&) { return *this; }
|
||||||
~equal_to() {}
|
~equal_to() {}
|
||||||
|
|
||||||
bool operator()(T const& x, T const& y) const { return true; }
|
bool operator()(T const&, T const&) const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T> class pointer;
|
template <class T> class pointer;
|
||||||
@ -90,7 +90,7 @@ namespace minimal
|
|||||||
T* operator->() const { return ptr_; }
|
T* operator->() const { return ptr_; }
|
||||||
pointer& operator++() { ++ptr_; return *this; }
|
pointer& operator++() { ++ptr_; return *this; }
|
||||||
pointer operator++(int) { pointer tmp(*this); ++ptr_; return tmp; }
|
pointer operator++(int) { pointer tmp(*this); ++ptr_; return tmp; }
|
||||||
pointer operator+(int s) const { return pointer(ptr_ + s); }
|
pointer operator+(int s) const { return pointer<T>(ptr_ + s); }
|
||||||
T& operator[](int s) const { return ptr_[s]; }
|
T& operator[](int s) const { return ptr_[s]; }
|
||||||
bool operator!() const { return !ptr_; }
|
bool operator!() const { return !ptr_; }
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# Copyright 2006 Daniel James.
|
# Copyright 2006-2007 Daniel James.
|
||||||
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -25,7 +25,5 @@ test-suite unordered-tests
|
|||||||
[ run bucket_tests.cpp ]
|
[ run bucket_tests.cpp ]
|
||||||
[ run load_factor_tests.cpp ]
|
[ run load_factor_tests.cpp ]
|
||||||
[ run rehash_tests.cpp ]
|
[ run rehash_tests.cpp ]
|
||||||
[ run swap_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=1 : swap_tests1 ]
|
[ run swap_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=3 ]
|
||||||
[ run swap_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=2 : swap_tests2 ]
|
|
||||||
[ run swap_tests.cpp : : : <define>BOOST_UNORDERED_SWAP_METHOD=3 : swap_tests3 ]
|
|
||||||
;
|
;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
template <class T> void sink(T const&) {}
|
template <class T> void sink(T const&) {}
|
||||||
|
|
||||||
template <class X, class Key>
|
template <class X, class Key>
|
||||||
void unordered_set_test(X& r, Key const& k)
|
void unordered_set_test(X&, Key const&)
|
||||||
{
|
{
|
||||||
typedef typename X::value_type value_type;
|
typedef typename X::value_type value_type;
|
||||||
typedef typename X::key_type key_type;
|
typedef typename X::key_type key_type;
|
||||||
@ -27,7 +27,7 @@ void unordered_set_test(X& r, Key const& k)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class X, class Key, class T>
|
template <class X, class Key, class T>
|
||||||
void unordered_map_test(X& r, Key const& k, T const& t)
|
void unordered_map_test(X&, Key const&, T const&)
|
||||||
{
|
{
|
||||||
typedef typename X::value_type value_type;
|
typedef typename X::value_type value_type;
|
||||||
typedef typename X::key_type key_type;
|
typedef typename X::key_type key_type;
|
||||||
@ -49,7 +49,7 @@ void unordered_equivalent_test(X& r, T const& t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class X, class Key, class T, class Hash, class Pred>
|
template <class X, class Key, class T, class Hash, class Pred>
|
||||||
void unordered_test(X& ref, Key& k, T& t, Hash& hf, Pred& eq)
|
void unordered_test(X&, Key& k, T& t, Hash& hf, Pred& eq)
|
||||||
{
|
{
|
||||||
typedef typename X::key_type key_type;
|
typedef typename X::key_type key_type;
|
||||||
typedef typename X::hasher hasher;
|
typedef typename X::hasher hasher;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
// Copyright 2006 Daniel James.
|
// Copyright 2006-2007 Daniel James.
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user