357 Commits

Author SHA1 Message Date
Ion Gaztañaga db96d2ad47 Fixes #240 ("_GLIBCXX_DEBUG detects issues in flat_set/map") 2023-02-23 22:16:10 +01:00
Ion Gaztañaga 5cea4e8718 Fixes #236 ("flat_tree::erase_unique uses wrong iterator") 2023-02-13 10:04:07 +01:00
Ion Gaztañaga 3ef88e47b5 Update changelog with issue #238 ("Containers should not be using memset to value-initialize POD types") 2023-02-13 08:57:31 +01:00
Giuseppe D'Angelo b694ada294 Do not memset(0) POD types
"POD" is the wrong type trait to determine if something can be safely
zero-filled in order to achieve zero initialization. Consider a type
like

  struct POD { int POD::*ptr; };

This is a POD; its value initialization needs to value initialize the
member, and since it's a pointer, that's zero initialization, and that's
setting the pointer to null.

On Itanium, a null pointer to data member is not zero filled; it actually
has the value -1u.

Hence, zero-filling via memset(0) a POD object like the one above is
erroneous. Unfortunately there is no type trait in C++ that we can use to
know if a given datatype can be value initialized by zero-filling -- we
can check for trivial constructability, but that's a necessary
condition, not a sufficient one (POD above is also trivially
constructible).

The test is disabled on MSVC because of a compiler bug.

Fixes #238
2023-02-02 11:29:53 +01:00
Ion Gaztañaga 2f70cddf55 Update changelog with #232 2022-12-11 23:58:08 +01:00
Ion Gaztañaga 4bed49ee14 Reworked devector's relocation options, instead of relocation_limit<relocation_limit_XX>, it's specified by single "relocate_on_XX" 2022-10-01 23:39:28 +02:00
Ion Gaztañaga 704bf10058 Refactor advanced insertion algorithms and implement a new devector insert strategy, moving elements to the middle if there is a reasonable free capacity at the other end of the container. 2022-09-20 00:22:19 +02:00
Ion Gaztañaga 231dd48e70 Fixes #211 ("Use atomics for pmr get/set default resource") 2022-07-25 01:28:58 +02:00
Ion Gaztañaga b8c59d595c Fixes #210: ("Use sized delete in boost::container::new_allocator...") 2022-07-16 20:55:42 +02:00
Ion Gaztañaga 0d5068a0cc Fixes #209 2022-07-16 17:26:09 +02:00
Ion Gaztañaga b7725ea473 Fixes #218 ("small_vector static capacity is too small when not a multiple of 8 bytes") 2022-07-10 18:36:02 +02:00
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 4ea5cd7911 Fixes GitHub #223 ("Possible copypaste typo") 2022-06-25 19:49:54 +02:00
Ion Gaztañaga d3ec5c677d Fixes #222 ("Fix incomplete type error when using list with pair") 2022-06-25 19:40:05 +02:00
Ion Gaztañaga f548e87cf5 Fixes #217 ("Broken link in docs") 2022-05-15 08:49:53 +02:00
Ion Gaztañaga f5b2c7ba74 Fixes #214: ("string is not properly null-terminated in assignments") 2022-03-06 22:37:41 +01:00
Ion Gaztañaga 3787fc3021 Fixes #207 ("boost.vector doesn't work with common_iterator") 2022-01-12 01:38:05 +01:00
Ion Gaztañaga 25f90dbb28 Update changelog with #195 2022-01-07 22:22:03 +01:00
Ion Gaztañaga 2e583241c1 Fixes #204 ("Inconsistent noexcept-ness of static_vector::reserve"). 2022-01-07 11:15:27 +01:00
Ion Gaztañaga cf3d6d3c51 Fixes #199 ("Apply LWG issue 3471") 2022-01-06 23:33:54 +01:00
Ion Gaztañaga 0eb901ee05 Fix wrongly committed boost_iterator_comp_test version 2021-12-30 23:27:40 +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 f6a03fd3f2 Fixes #197 ("small_vector::swap causes spurious allocations and suboptimal performance") 2021-11-01 00:19:16 +01:00
Ion Gaztañaga bcd41a1c64 - Add BOOST_CONTAINER_FORCEINLINE to trivial string internal functions
- Fixes #192 ("basic_string::clear() has poor codegen compared to STL implementations")
2021-09-13 14:19:38 +02:00
Ion Gaztañaga bfbab6ed7f Fixes #186 ("Warnings out the wazoo") 2021-08-09 00:59:57 +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 aaa2485ebf Fixes #188 ("Build fails when RTTI is disabled") 2021-08-08 00:06:01 +02:00
Ion Gaztañaga 15bed478eb Fixes #185 ("Including headers adds exports"), replacing BOOST_SYMBOL_EXPORT with BOOST_SYMBOL_VISIBLE. 2021-05-03 09:18:51 +02:00
Ion Gaztañaga b7d48f1e08 Fixes #180: ("polymorphic_allocator's copy special member functions are not noexcept") 2021-04-21 00:53:43 +02:00
Ion Gaztañaga ad7167c564 Fixes #150 ("Use std::contiguous_iterator_tag if available"), tested in MSVC and GCC. 2021-04-21 00:43:31 +02:00
Ion Gaztañaga 249d537b58 Add BOOST_NOEXCEPT macro to doxygen 2021-04-19 21:53:32 +02:00
Ion Gaztañaga 16cada57ea Fixes #184 ("Issues with custom exceptions implementation") 2021-04-19 21:52:55 +02:00
Ion Gaztañaga d7e99e56c6 Rewrite [flat_]map/set insert overloads to be more standard compliant. Fixes #102 ("flat_map::insert ambiguous with initializer list & pairs that need to convert"). 2021-01-01 23:50:50 +01:00
Ion Gaztañaga d5a830434e - Replaced default standard exception classes with Boost.Container own classes, reducing considerably the included files overhead 2020-12-30 15:07:32 +01:00
Ion Gaztañaga b17dabf47a Fixes #141 ('small_vector does not propagate no throw properties of move operation of contained type') 2020-12-30 00:19:22 +01:00
Ion Gaztañaga 93bbf37dad Fixes #139 ("flat_map merge and iterators"). 2020-11-14 00:10:46 +01:00
Ion Gaztañaga ae93df82ea Fixes #164 ("Compile error when using pmr::map with a std::pair; works when using a std::tuple") 2020-11-13 23:43:02 +01:00
Ion Gaztañaga 2a458005d9 Fixes #171 ("deque::clear() uses undefined behaviour") 2020-11-10 10:08:03 +01:00
Ion Gaztañaga 6100bcfdeb Update changelog for 1.76 2020-11-05 14:30:41 +01: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 99d56db196 Update changelog with #162. 2020-11-02 15:08:19 +01:00
Ion Gaztañaga d4c8bd70ea Fixes #152 ("Tree-based containers have troubles with move-only types") 2020-10-31 23:09:52 +01:00
Ion Gaztañaga 38ea1d7294 Update changelog with #169 2020-10-31 18:57:21 +01:00
Ion Gaztañaga 05bc4e7b9a Update changelog with #165 and #166 2020-10-25 17:26:07 +01:00
Ion Gaztañaga 03f030af69 Fixes #156: ("Compile error with vector") and remove warnings about precission loss due to integer narrowing 2020-10-22 01:10:07 +02:00
Giovanni Mascellani 433f98ce88 Fix encoding error in copyright headers. 2020-10-05 19:27:15 +02:00
Ion Gaztañaga 0fae2d7e90 Add Issue #163 to changelog 2020-09-07 17:12:09 +02:00
Ion Gaztañaga cdd6d9ad8a Fixes #160 ("Usage of uses_allocator needs a remove_cvref_t") 2020-08-31 22:21:41 +02:00
Ion Gaztañaga 0b297019ec Fixes #161: ("polymorphic_allocator(memory_resource*) non-standard extension causes headache") 2020-08-31 13:37:11 +02:00
Ion Gaztañaga ebcd0222b4 Integrate and adapt "devector's", from Thaler Benedek's implementation. 2020-08-10 00:16:58 +02:00