Commit Graph

812 Commits

Author SHA1 Message Date
LeonineKing1199 33f84624ec Add initial draft of heterogeneous erase() 2021-12-02 15:59:12 -08:00
LeonineKing1199 f252480bee Add missing formatting 2021-12-02 15:44:02 -08:00
LeonineKing1199 c9df887c4c Add member function template erase_key_unique_impl for usage in heterogeneous lookups 2021-12-02 15:38:07 -08:00
LeonineKing1199 03edf7f4a8 Add member function template find_previous_node_impl so it can be used in heterogenous contexts 2021-12-02 15:30:17 -08:00
LeonineKing1199 13f40e4333 Implement heterogeneous equal_range() for unordered_map 2021-12-01 09:39:07 -08:00
LeonineKing1199 8f1fc75fdf Implement heterogeneous find() 2021-11-29 14:37:04 -08:00
Peter Dimov 5e8b6a9e55 Add comment describing the origin of mix64_policy::apply_hash 2021-11-29 06:14:20 +02:00
LeonineKing1199 fd0cab2ab8 Remove out-of-line defintion for transparent count() to hopefully appease msvc-9.0 2021-11-22 15:43:28 -08:00
LeonineKing1199 8ba710637a Remove detail::make_dependent in favor of an extra template parameter in is_transparetn 2021-11-22 13:29:41 -08:00
LeonineKing1199 59db6cf788 Add SFINAE to transparent count() overload in unordered_map 2021-11-22 11:16:04 -08:00
LeonineKing1199 f41b3e8295 Get initial prototype of transparent count() working 2021-11-19 15:29:57 -08:00
Peter Dimov c8abaf32ee Merge pull request #40 from LeonineKing1199/sfinae-updates
Update SFINAE expressions to be in the return type
2021-11-19 04:32:06 +02:00
LeonineKing1199 7ccd62ba98 Update SFINAE expressions to be in the return type instead of a defaulted function parameter 2021-11-18 12:54:17 -08:00
LeonineKing1199 2d69c7a5ca Add missing const-qualification of operator== for internal optional implementation 2021-11-18 10:19:20 -08:00
LeonineKing1199 a97160cf57 Fix bug in has_construct by using std::declval 2021-08-29 12:13:56 -07: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 e10fc0f93b Fix typo 2018-02-25 14:03:11 +00: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 c01a8c4629 Oops, it's boost::to_address, no boost::to_pointer 2018-01-26 20:25:09 +00:00
Daniel James ddf302fcc2 Use boost::to_pointer instead of pointer<..>::get
To get C++20 style recursive calls to `operator->`.
2018-01-26 18:59:16 +00:00
Daniel James 66533ace80 Add element_type to nodes, so that pointer_traits will work
Might be better to change the template signature of iterators, but that would
be a disruptive change to make at the moment.
2018-01-26 17:43:06 +00:00
Daniel James ea599a66b7 Disable 'conditional expression is constant' on older Visual C++ 2018-01-23 15:40:58 +00:00
Daniel James f3476de893 Some explicit casts to avoid warnings on old GCC 2018-01-10 11:35:42 +00:00
Daniel James dea525b2b7 Suppress msvc waring "conditional expression is constant" 2018-01-10 11:35:22 +00:00
Daniel James d55c9565ab No template arguments in BOOST_MOVABLE_BUT_NOT_COPYABLE
Was causing errors on Visual C++ 7.1.
2018-01-10 09:58:08 +00:00
Daniel James 00a4185cf1 Reformat 2018-01-08 10:58:09 +00:00
Daniel James ea28a3f98e Fix conversion to bool warning 2018-01-08 10:57:28 +00:00
Daniel James 34e54b35e8 Manually handle assigning hash/equality functions 2018-01-06 12:53:37 +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 7e28fdd45a Make the current function_pair public 2018-01-05 17:10: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 be0acc575f Implement allocator_traits::is_always_equal 2018-01-03 20:55:40 +00:00
Daniel James 9d558b010d Reformat 2017-12-28 11:44:57 +00:00
Daniela Engert 64441d2b64 Inheriting std::iterator is deprecated in c++17.
Therefore get rid of all of that and replace inheritance by lifting std::iterator's members into the derived class.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-12-28 12:01:41 +01:00
Daniel James 92ce66be64 Rename 'bucket' variable to avoid shadow warning 2017-12-22 16:54:05 +00:00
Daniel James 15befe998e Rename table::get_bucket to get_bucket_pointer
All the other '*_bucket' methods return a bucket index.
2017-12-22 16:44:43 +00:00
Daniel James b50e0d610f Initial implementation of template deduction guides 2017-12-19 12:56:51 +00:00
Daniel James f99dee1917 Use predef for detecting piecewise construction
And detect it for recent dinkumware.
2017-12-19 12:11:36 +00:00
Daniel James 311e126ac4 Remove dependency on iterator 2017-12-03 18:58:52 +00:00
Daniel James c037169e1a Update paths for headers moved from detail 2017-12-03 14:24:47 +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 705e69aefd Always call set_first_in_group
Probably don't need to, as we're using 0 for the first element in a group, but
it's quick so might as well.
2017-10-05 10:54:23 +01:00
Daniel James e58081f6dc Drop some TODOs that are okay 2017-10-05 10:54:22 +01:00
Daniel James 4ac8a45a34 The max_load issue was fixed in the standard ages ago 2017-10-05 10:54:22 +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 5190a5d7f8 Stop dereferencing pointers to uninitialized memory
It's undefined behaviour. Still happens for piecewise construction
emultation for std::pair, I don't think there's anyway to avoid it.
I had considered using offsetof to get a pointer to a member, but that's
also undefined behaviour when a pair member doesn't have standard
layout. Piecewise construction emulation has other problems anyway.

So, this mostly fixes PR #5.

I also stopped using addressof in self-asssignment checks as operator&
is fine.
2017-06-04 08:47:02 +01:00
Daniel James 7775aa83df Decrease the limit for SunOS workaround
We have tests for 12.5 (5,20,0), and 12.5_next (5,21,0), I think both
are good enough to not require workarounds.
2017-05-25 08:53:34 +01:00