Commit Graph
155 Commits
Author SHA1 Message Date
Christian Mazakas db9d9d1f77 Update implementation to support a default-constructible table and grouped_bucket_array 2022-08-30 15:20:31 -07:00
Christian Mazakas f9eae4153f Update code to be valid when the internal buckets_ data member is moved-from 2022-08-18 09:04:53 -07:00
Christian Mazakas a31e894411 Update implementation to use erase_node() where applicable 2022-07-25 11:35:38 -07:00
Christian Mazakas 5a456eb295 Refactor internal implementation to use "fast closed-addressing" aka fca 2022-06-01 11:49:09 -07:00
Peter Dimov 0d3ece98c1 Merge pull request #106 from cmazakas/missing-nodiscard
Add missing `[[nodiscard]]` qualifiers as outlined by C++20
2022-02-24 18:00:00 +02:00
Christian Mazakas 3d952d3c0f Add missing [[nodiscard]] qualifiers as outlined by C++20 2022-02-23 14:26:28 -08:00
Christian Mazakas c322cc5621 Implement erase_if() for Unordered via function template in detail namespace 2022-02-23 11:36:48 -08:00
Christian Mazakas e2b6865938 Fix C4800 warnings in msvc by manually comparing pointers to 0 2022-02-10 08:37:53 -08:00
Christian Mazakas 97734fd895 Implement unordered_multiset::contains() 2022-01-13 12:51:50 -08:00
Christian Mazakas f5d470c531 Implement unordered_set::contains() 2022-01-13 08:03:54 -08:00
Christian Mazakas 1c459e6ee6 Implement heterogeneous extract() for multiset 2022-01-05 08:14:58 -08:00
Christian Mazakas abc7327116 Implement heterogeneous extract() for set 2022-01-04 11:50:20 -08:00
Christian Mazakas d5e5c08b87 Implement heterogeneous count() for multiset 2022-01-04 09:05:17 -08:00
Christian Mazakas 56f11f94d8 Implement heterogeneous count() for set 2022-01-03 15:48:51 -08:00
Christian Mazakas 1ab8cc4c0f Implement heterogeneous erase() for multiset 2022-01-03 13:54:06 -08:00
Christian Mazakas 202a438044 Implement heterogeneous find() for multiset 2022-01-03 07:59:36 -08:00
Christian Mazakas f813bbdf86 Implement heterogeneous equal_range() for multiset 2021-12-29 10:36:23 -08:00
Christian Mazakas 57a2b65488 Implement heterogeneous equal_range() for set 2021-12-27 12:20:52 -08:00
Christian Mazakas 9c07cf60a6 Deprecate table::erase_key_unique() 2021-12-23 13:12:52 -08:00
Christian Mazakas 36324af017 Implement heterogeneous erase() for set 2021-12-23 13:03:08 -08:00
Christian Mazakas 05373cbb6b Implement heterogeneous find() for set 2021-12-23 09:54:12 -08:00
Edward Diener 887f1dc07c Change __BORLANDC__ to BOOST_BORLANDC and __CODEGEARC__ to BOOST_CODEGEARC, which are3defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-31 22:47:48 -04:00
Daniel James 09be9bae04 Use boost::is_nothrow_swappable, now that it's available everywhere 2018-01-27 09:38:19 +00:00
Daniel James ea599a66b7 Disable 'conditional expression is constant' on older Visual C++ 2018-01-23 15:40:58 +00:00
Daniel James dea525b2b7 Suppress msvc waring "conditional expression is constant" 2018-01-10 11:35:22 +00:00
Daniel James f12009fc61 operator= noexcept support 2018-01-05 17:54:44 +00:00
Daniel James 5854090dc7 Swap noexcept support
Not properly supported as we don't have is_nothrow_swappable yet.
2018-01-05 17:48:13 +00:00
Daniel James 7615fabc80 Rewrite node handles using a lightweight limited optional
Will try to use std::optional when available. Also using
allocator_traits::is_always_equal support.
2018-01-03 23:15:55 +00:00
Daniel James b50e0d610f Initial implementation of template deduction guides 2017-12-19 12:56:51 +00:00
Daniel James 978944fab2 Use same code for move constructing all containers
Copies the data layout from the source, so it doesn't need to hash anything.
2017-10-05 10:56:02 +01:00
Daniel James 6b5b968b97 Format with clang-format 4.0 2017-10-05 10:54:22 +01:00
Daniel James f72b0353d4 Shuffle code around for readability
The new indentation made some of the code difficult to read, especially
where macros were concerned, so move things around and add more explicit
namespace declarations.
2017-06-11 20:55:59 +01:00
Daniel James 0676b4f4ca Change clang format indentation + .editorconfig file 2017-06-11 20:55:59 +01:00
Daniel James 5b97fbc292 Make insert from node_handle move only on old GCC 2017-05-19 09:42:56 +01:00
Daniel James e0227618bb Move a few things around to match the order in the standard 2017-05-17 16:47:57 +01:00
Daniel James ee9a5a2c77 Add a configuration macro for Sun C++ workarounds 2017-05-16 19:01:50 +01:00
Daniel James b6c6bfbe7f Statically handle 'is_unique' in assignments 2017-05-06 04:58:57 +01:00
Daniel James 6e074d7165 Get rid of delete_nodes 2017-05-06 04:58:57 +01:00
Daniel James 77bd45b1fa Make second parameter of delete_nodes a node_pointer 2017-05-04 00:14:05 +01:00
Daniel James 2e14c340a8 Reformat 2017-05-01 21:03:11 +01:00
Daniel James 7b5f73f6c2 Disable all sunpro workarounds on latest version
I have no idea if they're still working. I wasn't able to run the latest
solaris in a virtual machine on my computer, so this is the only way to
test.
2017-04-30 10:44:54 +01:00
Daniel James 6466ce0b51 Make table the same for unique and equivalent keys 2017-04-27 18:22:44 +01:00
Daniel James 03baef8b28 Remove Types::is_unique 2017-04-27 18:22:44 +01:00
Daniel James e9c4696544 Get rid of node_algo 2017-04-27 18:22:43 +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 e518120104 Rename some copy/assign/move methods
But with a hack so that the static casts will work until there's a
better method.
2017-04-24 09:46:05 +01:00
Daniel James 84f1ef6d2d Move constructor implementation into containers 2017-04-24 09:46:05 +01:00
Daniel James 77bf2b5e33 Rename methods to be different for unique/equiv keys
So that the implementation can be moved into a single class. Still some
other methods to rename. Some methods didn't need to be renamed (e.g.
try_emplace is only used with unique keys), but still renamed for
consistency.
2017-04-24 09:46:05 +01:00
Daniel James 13ff1e7fb1 Expand calls to count and equal_range implementation 2017-04-23 10:09:18 +01:00