forked from boostorg/unordered
Merge branch 'develop'
This commit is contained in:
@ -252,4 +252,12 @@ C++11 support has resulted in some breaking changes:
|
|||||||
uses slower ([ticket 9282]).
|
uses slower ([ticket 9282]).
|
||||||
* Only construct elements using allocators, as specified in C++11 standard.
|
* Only construct elements using allocators, as specified in C++11 standard.
|
||||||
|
|
||||||
|
[h2 Boost 1.57.0]
|
||||||
|
|
||||||
|
* Fix the `pointer` typedef in iterators ([ticket 10672]).
|
||||||
|
* Fix Coverity warning
|
||||||
|
([@https://github.com/boostorg/unordered/pull/2 GitHub #2]).
|
||||||
|
* Rename private `iterator` typedef in some iterator classes, as it
|
||||||
|
confuses some traits classes.
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
@ -60,7 +60,7 @@ namespace boost { namespace unordered { namespace iterator_detail {
|
|||||||
std::forward_iterator_tag,
|
std::forward_iterator_tag,
|
||||||
typename Node::value_type,
|
typename Node::value_type,
|
||||||
std::ptrdiff_t,
|
std::ptrdiff_t,
|
||||||
typename Node::node_pointer,
|
typename Node::value_type*,
|
||||||
typename Node::value_type&>
|
typename Node::value_type&>
|
||||||
{
|
{
|
||||||
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
||||||
@ -120,7 +120,7 @@ namespace boost { namespace unordered { namespace iterator_detail {
|
|||||||
std::forward_iterator_tag,
|
std::forward_iterator_tag,
|
||||||
typename Node::value_type,
|
typename Node::value_type,
|
||||||
std::ptrdiff_t,
|
std::ptrdiff_t,
|
||||||
ConstNodePointer,
|
typename Node::value_type const*,
|
||||||
typename Node::value_type const&>
|
typename Node::value_type const&>
|
||||||
{
|
{
|
||||||
friend struct boost::unordered::iterator_detail::l_iterator
|
friend struct boost::unordered::iterator_detail::l_iterator
|
||||||
@ -188,7 +188,7 @@ namespace boost { namespace unordered { namespace iterator_detail {
|
|||||||
std::forward_iterator_tag,
|
std::forward_iterator_tag,
|
||||||
typename Node::value_type,
|
typename Node::value_type,
|
||||||
std::ptrdiff_t,
|
std::ptrdiff_t,
|
||||||
typename Node::node_pointer,
|
typename Node::value_type*,
|
||||||
typename Node::value_type&>
|
typename Node::value_type&>
|
||||||
{
|
{
|
||||||
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
||||||
@ -252,7 +252,7 @@ namespace boost { namespace unordered { namespace iterator_detail {
|
|||||||
std::forward_iterator_tag,
|
std::forward_iterator_tag,
|
||||||
typename Node::value_type,
|
typename Node::value_type,
|
||||||
std::ptrdiff_t,
|
std::ptrdiff_t,
|
||||||
ConstNodePointer,
|
typename Node::value_type const*,
|
||||||
typename Node::value_type const&>
|
typename Node::value_type const&>
|
||||||
{
|
{
|
||||||
friend struct boost::unordered::iterator_detail::iterator<Node>;
|
friend struct boost::unordered::iterator_detail::iterator<Node>;
|
||||||
|
@ -59,6 +59,10 @@ namespace boost { namespace unordered { namespace detail {
|
|||||||
sizeof(value_type),
|
sizeof(value_type),
|
||||||
boost::alignment_of<value_type>::value>::type data_;
|
boost::alignment_of<value_type>::value>::type data_;
|
||||||
|
|
||||||
|
value_base() :
|
||||||
|
data_()
|
||||||
|
{}
|
||||||
|
|
||||||
void* address() {
|
void* address() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,28 @@ void unordered_set_test(X&, Key const&)
|
|||||||
typedef BOOST_DEDUCED_TYPENAME X::key_type key_type;
|
typedef BOOST_DEDUCED_TYPENAME X::key_type key_type;
|
||||||
|
|
||||||
BOOST_STATIC_ASSERT((boost::is_same<value_type, key_type>::value));
|
BOOST_STATIC_ASSERT((boost::is_same<value_type, key_type>::value));
|
||||||
|
|
||||||
|
// iterator pointer / const_pointer_type
|
||||||
|
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::iterator iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::const_iterator const_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::local_iterator local_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::const_local_iterator const_local_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<iterator>::type iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<const_iterator>::type
|
||||||
|
const_iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<local_iterator>::type local_iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<const_local_iterator>::type
|
||||||
|
const_local_iterator_pointer;
|
||||||
|
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, const_iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, local_iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, const_local_iterator_pointer>::value));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class X, class Key, class T>
|
template <class X, class Key, class T>
|
||||||
@ -191,6 +213,30 @@ void unordered_map_test(X& r, Key const& k, T const& v)
|
|||||||
BOOST_STATIC_ASSERT((
|
BOOST_STATIC_ASSERT((
|
||||||
boost::is_same<value_type, std::pair<key_type const, T> >::value));
|
boost::is_same<value_type, std::pair<key_type const, T> >::value));
|
||||||
|
|
||||||
|
// iterator pointer / const_pointer_type
|
||||||
|
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::iterator iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::const_iterator const_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::local_iterator local_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME X::const_local_iterator const_local_iterator;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<iterator>::type iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<const_iterator>::type
|
||||||
|
const_iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<local_iterator>::type local_iterator_pointer;
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME
|
||||||
|
boost::iterator_pointer<const_local_iterator>::type
|
||||||
|
const_local_iterator_pointer;
|
||||||
|
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type*, iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, const_iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type*, local_iterator_pointer>::value));
|
||||||
|
BOOST_STATIC_ASSERT((boost::is_same<value_type const*, const_local_iterator_pointer>::value));
|
||||||
|
|
||||||
|
// Calling functions
|
||||||
|
|
||||||
r.insert(std::pair<Key const, T>(k, v));
|
r.insert(std::pair<Key const, T>(k, v));
|
||||||
|
|
||||||
Key k_lvalue(k);
|
Key k_lvalue(k);
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "../helpers/postfix.hpp"
|
#include "../helpers/postfix.hpp"
|
||||||
|
|
||||||
#include "../helpers/test.hpp"
|
#include "../helpers/test.hpp"
|
||||||
|
#include <boost/predef.h>
|
||||||
#include <boost/next_prior.hpp>
|
#include <boost/next_prior.hpp>
|
||||||
#include "../objects/test.hpp"
|
#include "../objects/test.hpp"
|
||||||
#include "../helpers/random_values.hpp"
|
#include "../helpers/random_values.hpp"
|
||||||
@ -598,7 +599,11 @@ UNORDERED_AUTO_TEST(insert_initializer_list_set)
|
|||||||
|
|
||||||
boost::unordered_set<initialize_from_two_ints> set2;
|
boost::unordered_set<initialize_from_two_ints> set2;
|
||||||
|
|
||||||
|
#if BOOST_COMP_GNUC && BOOST_COMP_GNUC < BOOST_VERSION_NUMBER(4,5,0)
|
||||||
|
set2.insert({{1, 2}});
|
||||||
|
#else
|
||||||
set2.insert({1, 2});
|
set2.insert({1, 2});
|
||||||
|
#endif
|
||||||
BOOST_TEST(set2.size() == 1);
|
BOOST_TEST(set2.size() == 1);
|
||||||
BOOST_TEST(set2.find({1,2}) != set2.end());
|
BOOST_TEST(set2.find({1,2}) != set2.end());
|
||||||
BOOST_TEST(set2.find({2,1}) == set2.end());
|
BOOST_TEST(set2.find({2,1}) == set2.end());
|
||||||
|
Reference in New Issue
Block a user