Commit Graph
285 Commits
Author SHA1 Message Date
Daniel James cae6b121b2 Improve test coverage a little 2017-04-28 21:26:21 +01:00
Daniel James bfcdd51b4a Fix try_emplace overload 2017-04-28 09:53:50 +01:00
Daniel James ea64f2e46e Remove the grouped node stuff 2017-04-27 18:22:43 +01:00
Daniel James b070bb5e49 Move everything from table_unique/table_equiv into table 2017-04-24 09:46:05 +01:00
Daniel James 3117611a55 New tuple implementation
Adjusts to use less arguments on Visual C++ 11, which will hopefully fix
it on that compiler. Also changed to be a little less preprocessor
heavy. I'm not sure about the __SUNPRO_CC support, hopefully recent
versions of that compiler will have better support, and can use the
normal implementation. Will check that later.
2017-04-22 18:31:10 +01:00
Daniel James 1e491533fa More consistent std::tuple configuration
Was getting a weird test failure for Visual C++ 11,
BOOST_NO_CXX11_HDR_TUPLE is defined, so the code doesn't support
std::tuple, but BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT was also
true, and so there are functions for constructing using
std::piecewise_construct/std::tuple, which don't work.

So, I'm assuming that if BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT is true,
then there must be a std::tuple. I guess it doesn't have full C++11 support,
which is why BOOST_NO_CXX11_HDR_TUPLE is defined, but it appears to be
good enough for us. If not, this will break things.
2017-04-21 20:32:56 +01:00
Daniel James de5373413b Missing rvalue overload of at 2017-04-20 22:59:00 +01:00
Daniel James 9cd673c71d Specify clear as noexcept 2017-04-20 22:59:00 +01:00
Daniel James bf7a65010c Add new erase(iterator) overloads
Not for unordered_set/unordered_multiset as they use the same type for
iterator and const_iterator.
2017-04-20 22:59:00 +01:00
Daniel James ee73a53497 Disable failing tests on gcc 4.6/4.7 c++11 mode
Works fine on later versions of GCC, I suspect it's a bug in their
noexcept support.
2017-04-20 10:11:01 +01:00
Daniel James 7a0a598649 Don't track construction when using boost::tuple
Because it doesn't quiet work on C++11 compilers onwards.
2017-04-18 10:14:26 +01:00
Daniel James cafd236a18 Test more memory tracking 2017-04-18 10:14:26 +01:00
Daniel James 2bfc59c461 Make node_handler constructor private + additional compile tests 2017-04-15 17:35:09 +01:00
Daniel James c2d2be021a Don't test inserting from initializer list in old clang
There's a problem with it causing an ambiguous overload. I don't think
there's anything we can do to fix that, so just don't test it.

There's another bug where a std::pair doesn't get correctly constructed
from an rvalue when using Clang 3.1 in C++11 mode. But I can't see any
way to easily fix that, and it's a pretty old compiler now.
2017-04-08 06:17:43 +01:00
Daniel James c18f57f62b Add missing copyright/license to a couple of files 2017-04-04 22:06:15 +01:00
Daniel James 0af2c732ab Fix use of BOOST_STATIC_ASSERT for older preprocessors 2017-03-01 16:52:43 +00:00
Daniel James 68fe365f5b Try to avoid Visual C++ warning C4800 2017-03-01 16:50:05 +00:00
Daniel James 4aa74e5feb Merge between set/multiset and map/multimap 2017-02-27 03:59:02 +00:00
Daniel James 13322fe858 Option to use same node type everywhere.
Will allow me to implement merge and extract fully.
2017-02-27 03:59:02 +00:00
Daniel James d89aadc56c Implement merge 2017-02-27 03:59:02 +00:00
Daniel James 21a24d6cd7 Support node_handle 2017-02-27 03:59:02 +00:00
Daniel James 5f5f8ef1e4 Implement try_emplace 2017-02-27 03:59:02 +00:00
Daniel James 958d206bb6 Implement insert_or_assign. 2017-02-27 03:59:02 +00:00
Daniel James c0b72d97b3 Stricter about rebinding the allocator 2017-02-23 20:14:27 +00:00
Daniel James bf5ef9824d Reformat with clang-format 2017-02-19 13:05:17 +00:00
Daniel James b2f2fdc2f3 Prevent clang-format sorting some test includes 2017-02-19 13:05:17 +00:00
Daniel James 67ab88b064 Combine most of the detail headers into a single header 2017-02-19 13:05:17 +00:00
Daniel James 33f701dd09 Fix assigning hash/key equality functions for empty containers 2016-11-21 10:24:51 +00:00
Daniel James a7546e298e Support 10 arguments in emplace_args
Which was the intent, but only supported up to 9 arguments. I doubt
this will make much of a difference.
2016-11-02 07:30:41 +00:00
Daniel James a34785fa0d Don't 'sink' uncopyable container
Calling sink was causing older versions of gcc to copy the container,
resulting in a compile error. So instead just disambiguate by putting
brackets around the expression.
2016-10-25 18:04:34 +01:00
Daniel James e3f534a148 Allocator aware constructors 2016-10-23 13:33:25 +01:00
Daniel James 1bcd5b0003 Make no argument constructor implicit 2016-10-23 13:32:52 +01:00
Daniel James 6071f9a08b Stop testing no arg emplace when not available 2016-10-22 09:49:14 +01:00
Daniel James ad2256b13c Add const cast for piecewise construction 2016-10-22 09:42:56 +01:00
Daniel James dad0d48c9c Support containers with const value type
Currently just storing the value without a const. Can do better with
C++11 constructors, so maybe should do that, and cast away const on
compilers without support.

Another problem is that std::allocator<const int> doesn't compile for
libstdc++ (and potentially other standard libraries), so
boost::unordered_set<const int> can't compile. I'm not sure if I should
work around that, as it means changing the type of the container
(i.e. to boost::unordered_set<const int,... , std::allocator<int>>).
2016-10-17 08:06:19 +01:00
Daniel James 74abdd6973 Replace boost::next with a simpler version
Less optimized, but hopefully it won't cause any warnings.
2016-10-11 13:36:41 +01:00
Daniel James a316d3fa46 Fix more warnings 2016-10-11 10:07:07 +01:00
Daniel James 147885fec4 Add another random generation style.
This time for a more limited range of values so that equal values turn
up more often.  This is a bit shoddy, but seems like the best way to
improve the existing tests without too much effort.
2016-10-06 21:52:19 +01:00
Daniel James b1588929cc Fix another sign conversion warning. 2016-10-05 13:52:33 +01:00
Daniel James 71d19820ac Fix signed conversion warnings. 2016-10-05 09:45:53 +01:00
Daniel James 982685d3a0 Adjust order of variables to see if intel failure changes.
So currently on one intel tester find_tests is failing the 'pos !=
x.end()' test, but not the 'const_pos != x_const.end()' test for
unordered_set (and possibly others, the test results are truncated). I'm
a bit stumped as to why this should be, as for unordered_set the const
and non-const versions are basically the exact same code. See if
changing the order makes any difference to what fails.
2016-10-05 00:57:58 +01:00
Daniel James dadb4486ee Fix calls to std::rand in tests 2016-10-04 15:52:47 +01:00
Daniel James d14c1dec59 Revert "Allocator aware constructors."
This reverts commit b00bc15c3e.

I messed that up a bit, will get back to it later.
2016-10-03 20:58:15 +01:00
Daniel James 21d6d7bc21 Fix detection of is_nothrow_move_constructible support.
I should possibly also check how it handles `throw()`?
2016-10-03 10:49:49 +01:00
Daniel James b00bc15c3e Allocator aware constructors. 2016-10-02 17:56:01 +01:00
Daniel James 50c4cbe06c Try to fix the failures in noxcept_tests 2016-10-02 13:04:25 +01:00
Daniel James 573e10665c Use standard boost move style in noexcept_tests. 2016-10-02 13:04:25 +01:00
Daniel James a93331dd96 Fix new emplace tests. 2016-10-01 13:51:25 +01:00
Daniel James 021817f2b4 Fix Visual C++ version number + use BOOST_WORKAROUND. 2016-09-18 22:56:23 +01:00
Daniel James b881bcfee3 More insert and erase tests 2016-09-18 12:22:48 +01:00