Merge branch 'develop'

This commit is contained in:
Daniel James
2018-03-06 22:29:30 +00:00
3 changed files with 49 additions and 11 deletions

View File

@@ -43,7 +43,7 @@
the number of times combine is called and hopefully give a better the number of times combine is called and hopefully give a better
quality hash function. quality hash function.
* Improved the algorithm for hashing floating point numbers. * Improved the algorithm for hashing floating point numbers.
* On Cygwin use a binary hash function for floating point numbers, as * On Cygwin use a binary hash function for floating point numbers, as
Cygwin doesn't have decent floating point functions for `long double`. Cygwin doesn't have decent floating point functions for `long double`.
* Never uses `fpclass` which doesn't support `long double`. * Never uses `fpclass` which doesn't support `long double`.
* [@http://svn.boost.org/trac/boost/ticket/1064 Ticket 1064]: * [@http://svn.boost.org/trac/boost/ticket/1064 Ticket 1064]:
@@ -75,7 +75,7 @@
functional/hash, not container_hash. `boost/container_hash/detail/container_fwd.hpp` functional/hash, not container_hash. `boost/container_hash/detail/container_fwd.hpp`
has been moved to `boost/detail/container_fwd.hpp` as it's used outside of has been moved to `boost/detail/container_fwd.hpp` as it's used outside of
this library, the others have been moved to `boost/functional/hash/detail`. this library, the others have been moved to `boost/functional/hash/detail`.
[h2 Boost 1.39.0] [h2 Boost 1.39.0]
* Move the hash_fwd.hpp implementation into the hash subdirectory, leaving a * Move the hash_fwd.hpp implementation into the hash subdirectory, leaving a
@@ -201,4 +201,20 @@
already in place for GCC, and was used when Clang pretends to be GCC, already in place for GCC, and was used when Clang pretends to be GCC,
but the warning was appearing when running Clang in other contexts. but the warning was appearing when running Clang in other contexts.
[h2 Boost 1.67.0]
* Moved library into its own module, `container_hash`.
* Moved headers for new module name, now at:
`<boost/container_hash/hash.hpp>`,
`<boost/container_hash/hash_fwd.hpp>`,
`<boost/container_hash/extensions.hpp>`.
* Added forwarding headers to support the old headers locations.
* Support `std::string_view`, `std::error_code`, `std::error_condition`
`std::optional`, `std::variant`, `std::monostate` where available.
* Update include paths from other Boost libraries.
* Manually write out tuple overloads, rather than using the
preprocessor to generate them. Should improve usability, due
to better error messages, and easier debugging.
* Fix tutorial example ([ticket 11017]).
[endsect] [endsect]

27
doc/samples/tutorial.cpp Normal file
View File

@@ -0,0 +1,27 @@
#include <boost/container_hash/hash.hpp>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cassert>
//[ get_hashes
template <class Container>
std::vector<std::size_t> get_hashes(Container const& x)
{
std::vector<std::size_t> hashes;
std::transform(x.begin(), x.end(), std::back_inserter(hashes),
boost::hash<typename Container::value_type>());
return hashes;
}
//]
int main() {
std::vector<int> values;
values.push_back(10);
values.push_back(20);
std::vector<std::size_t> hashes = get_hashes(values);
assert(hashes[0] = boost::hash<int>()(values[0]));
assert(hashes[1] = boost::hash<int>()(values[1]));
}

View File

@@ -3,6 +3,9 @@
/ 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) ]
[quickbook 1.7]
[import samples/tutorial.cpp]
[def __multi-index-short__ [@boost:/libs/multi_index/doc/index.html [def __multi-index-short__ [@boost:/libs/multi_index/doc/index.html
Boost.MultiIndex]] Boost.MultiIndex]]
@@ -39,15 +42,7 @@ To use [classref boost::hash] directly, create an instance and call it as a func
For an example of generic use, here is a function to generate a vector For an example of generic use, here is a function to generate a vector
containing the hashes of the elements of a container: containing the hashes of the elements of a container:
template <class Container> [get_hashes]
std::vector<std::size_t> get_hashes(Container const& x)
{
std::vector<std::size_t> hashes;
std::transform(x.begin(), x.end(), std::insert_iterator(hashes),
``[classref boost::hash]``<typename Container::value_type>());
return hashes;
}
[endsect] [endsect]