Commit Graph
86 Commits
Author SHA1 Message Date
Ion Gaztañaga 34cd414280 Fixes #221 ("flat_set and friends should offer a const sequence_type& sequence() const method (...)") 2022-06-25 20:29:16 +02:00
Ion Gaztañaga 4301005b25 Remove some Wmaybe-uninitialized warnings for GCC 11 2021-12-29 23:43:44 +01:00
Ion Gaztañaga 3f76f9fdf7 Fixes #206 ("operator-> on static_vector::iterator causes cast alignment warning") 2021-12-28 15:17:15 +01:00
Ion Gaztañaga dad2cb2d02 Support GCC's -Wconversion -Wfloat-conversion -Warith-conversion -Wsign-conversion warnings. 2021-10-16 15:57:47 +02:00
Ion Gaztañaga 1cc35bbc98 Fixes #187 ("flat_map::erase and unique keys") 2021-08-08 00:38:29 +02:00
Ion Gaztañaga c476113411 Merge branch 'noexcept-swap' of https://github.com/palebedev/container into palebedev-noexcept-swap 2021-01-02 00:38:31 +01:00
Ion Gaztañaga 80697e7c0f #pragma GCC diagnostic push is available from GCC 4.6, not from GCC 4.5 2021-01-01 23:43:44 +01:00
Pavel A. Lebedev cb1e6af53d Add conditional noexcept forwarding from free to member swap functions.
This allows std::is_nothrow_swappable{,_with} to work properly.
This only touches user-facing classes, with the following exceptions:
- map,set: only doc changes (with a drive-by missing semicolon fix),
  detail::tree which they derive from already forwards noexcept for swap.
- flat_set: only doc changes for flat_set and a change for
  detail::flat_tree, which it derives from to get swap.
- static_vector: while this adds the forwarding, member static_vector::swap
  is currently never noexcept, although it could be for noexcept-swappable
  and noexcept-move-constructible elements.
- small_vector: there is no free swap, and member swap is never noexcept,
  although it could be for noexcept-swappable and noexcept-move-
  constructible elements. Swapping small_vectors of exact same type goes
  through std::swap, which seems to get noexcept right, and small_vectors
  of different sizes use swap for boost::container::vector, which fails
  to detect when such swap could be noexcept. This patch doesn't touch
  small_vector.
- scoped_allocator: neither member nor free swap are noexcept, although
  they should be, and all other constructions/assignments/comparisons too,
  as they only forward these operations to underlying allocators, which
  are required to not throw exceptions for them. Only static_vector's
  static_storage_allocator might throw for these and it shouldn't appear
  in scoped_allocator. Unsure of the scope of changes needed or whether it
  is even worth it, this patch doesn't touch scoped_allocator.
2020-12-30 08:28:06 +03:00
Ion Gaztañaga 0a0ad0009e Add support for [[nodiscard]]:
- Decorate container and allocator functions.
- Make sure to disable warnings in tests
- Update doxygen documentation to support it
2020-11-05 14:24:35 +01:00
Ion Gaztañaga 438813726b Add BOOST_CONTAINER_FORCEINLINE to trivial operations. 2020-08-31 13:36:46 +02:00
Ion Gaztañaga ebcd0222b4 Integrate and adapt "devector's", from Thaler Benedek's implementation. 2020-08-10 00:16:58 +02:00
Ion Gaztañaga 0c95d4846f Fix "count" with heterogeneous lookups in flat_map and flat_set 2019-06-22 10:26:36 +02:00
Mitsuru Kariya f25c767a2b Fix has_trivial_destructor_after_move
Most template type parameters 'Allocator' were modified their default type to void since 1.70.0.
These modifications cause has_trivial_destructor_after_move to compile error or yield wrong result.
So, fix them by changing specializations of has_trivial_destructor_after_move.
2019-06-01 22:36:54 +09:00
Ion Gaztañaga 06ee4f7a39 Fixes #118 ("Non-unique inplace_set_difference used in in flat_tree_merge_unique and iterator invalidation in insert_unique") 2019-04-24 22:49:50 +02:00
Adam Wulkiewicz ae6480f2a0 Prefix aligned_storage with dtl:: (workaround for msvc 10, 11, 12).
see https://github.com/boostorg/container/issues/112
2019-04-01 19:38:27 +02:00
Brandon Castellano 38b854b296 Restore indentation. 2019-01-28 19:59:59 -05:00
Brandon Castellano 33423d4301 Fix compilation issues in detail/flat_tree.hpp. 2019-01-28 15:07:21 -05:00
Ion Gaztañaga 83bb62fed3 Default allocator parameter changed form new_alloator<T> to void to reduce symbol lenghts 2019-01-10 22:54:58 +01:00
Ion Gaztañaga 43c0d7a731 Fix some type punning warnings, avoiding forming a reference to non-constructed objects 2018-09-15 01:20:43 +02:00
Ion Gaztañaga 139db663a3 * Implemented C++20 contains() for associative containers as specified in P0458R2.
* Fixed serious bug in heterogeneous lookup functions (is_transparent was broken).
2018-08-13 15:36:00 +02:00
Ion Gaztañaga 48c21e3187 Implemented C++14's heterogeneous lookups. 2018-05-01 14:55:24 +02:00
Ion Gaztañaga f0736ba73a Use new "data" member char array in aligned_storage::type for placement new, to avoid breaking strict aliasing. 2018-01-30 14:20:52 +01:00
Ion Gaztañaga feeafbe9f3 Use pdqsort to sort unique values. 2017-12-31 21:08:19 +01:00
Ion Gaztañaga 6ce2b2d0f8 Add improved range insertion to flat associative containers and improve merge operation for vector. 2017-12-26 22:04:15 +01:00
Ion Gaztañaga 2802a1f50d - Add configuration options to vector
- Cleanup tree configuration options
2017-12-10 23:33:41 +01:00
Ion Gaztañaga fa2494631a Use namespace dtl instead of container_detail to avoid excessively long symbol names. 2017-11-07 00:51:46 +01:00
Ion Gaztañaga 9ee836ee3d Fixes to flat_map when used as an adaptor from regression tests errors in Mingw. 2017-08-28 11:58:43 +02:00
Ion Gaztañaga c123accab1 Complete support for user-provided containers to flat_[multi]map/set containers, and instantiate them with several container types. 2017-08-28 10:45:29 +02:00
Ion Gaztañaga 2297f6af72 Modify flat associative containers to be adaptors if the allocator argument is a container. This allows using stable_vector, small_vector, static_vector as underlying containers. 2017-08-27 12:40:15 +02:00
Ion Gaztañaga ec91367383 Review all associative containers and implement a different constructor overload to avoid any unnecessary copy construction of the predicate or the allocator. 2017-05-16 16:29:49 +02:00
Ion Gaztañaga 1d727753e2 Use directly boost::movelib::to_raw_pointer/iterator_to_raw_pointer 2017-04-07 16:07:00 +02:00
Ion Gaztañaga d6749960fc Implement extract_sequence and adopt_sequence for flat ordered associative containers 2017-04-05 16:06:31 +02:00
Maks Naumov e7f452bf91 Remove unused local variable 2016-11-17 00:02:29 +02:00
Ion Gaztañaga f540b83ccd * Implemented merge operations for associative containers.
* Update tree-based containers to changes done in Intrusive internal utilities in order to fix Trac 12432.
2016-09-03 00:03:42 +02:00
Ion Gaztañaga 1467c51a4e Implemented missing try_emplace member for maps. 2016-08-26 01:47:32 +02:00
Ion Gaztañaga 2d6f781a2f Implemented "insert_or_assign" for map-like containers. 2016-08-18 20:29:04 +02:00
Ion Gaztañaga fb1be6fa75 Fix Trac #12117 ("flat_set constructor with ordered_unique_range") adding checks to constructors in debug mode
Fix typos on value_type checks in flat_[multi]map.
2016-08-15 23:22:57 +02:00
Ion Gaztañaga d5adae2eda Fixes Trac #11802 ("Incorrect ordering after using insert() with ordered_range_t on a flat_multiset with a non-default sort order") 2016-08-12 00:43:16 +02:00
Ion Gaztañaga 225e2da77e Revised noexcept expressions of default and move constructors in all containers. 2016-08-01 23:49:51 +02:00
Ion Gaztañaga 85b2ed509b Added debug assertions via BOOST_ASSERT to check preconditions in several members. All checks are O(1) 2015-09-18 14:39:17 +02:00
Ion Gaztañaga a91f6d317b Fixed wrong call to vector::merge_unique in insert_unique and used placement construction in priv_merge_in_new_buffer 2015-07-21 23:40:52 +02:00
Ion Gaztañaga 3246e11ca2 Added new experimental merge functions to speed up flat_xxx range insertion 2015-04-14 15:22:06 +02:00
Ion Gaztañaga f47bf08ccc Try to definitely fix Trac Issue #9931 (flat_map::insert(ordered_unique_range_t...) fails with move_iterators") 2015-02-03 16:09:47 +01:00
Ion Gaztañaga 10d027aa9c Include boost/config.hpp before testinG BOOST_HAS_PRAGMA_ONCE. 2015-02-02 15:26:53 +01:00
Ion Gaztañaga b786c8f716 Replaced BOOST_CONTIANER_NOEXCEPT with BOOST_NOEXCEPT 2015-01-28 22:11:00 +01:00
Ion Gaztañaga dbafd61d4d updated move assignments and swap operations to "N4258: Cleaning-up noexcept in the Library, Rev 3" with some customizations. 2015-01-19 00:18:44 +01:00
Ion Gaztañaga a322203a89 Replaced _MSC_VER with BOOST_HAS_PRAGMA_ONCE before #pragma once. 2015-01-10 12:50:17 +01:00
Ion Gaztañaga 360957a797 Massive dependency reduction. Removed dependency on several boost libraries and standard C++ headers. 2015-01-02 19:34:21 +01:00
Ion Gaztañaga 32418cab5f Use boost::adl_move_swap instead of custom swap or std::swap for performance and compatibility reasons. 2014-11-28 15:41:44 +01:00
Ion Gaztañaga 7971dc6602 Refactored uses of <iterator> and <algorithm> to avoid dependencies where possible. 2014-11-26 07:08:06 +01:00