1382 Commits
Author SHA1 Message Date
joaquintides 88f984e890 added interoperability with C++20 ranges (#355)
* added from_range ctors and insert_range
* worked around GCC 10-11 bug when piping a temporary range
* added insert_range_(or|and)_[c]visit
* typo
* tried to avoid MinGW32 compilation OOM in cfoa/insert_tests.cpp
* s/<debug-symbols>off/<cxxflags>-g0
* tested CTAD deduction guides
* typo
* updated docs
* Justified std::from_range_t detection trick
* reduced parallel build jobs in MINGW32 to try to avoid OOM during compilation
* tried to avoid compilation OOM by tweaking GC
* relaxed GCC parameters somewhat
* applied same changes to test/CMakeLists.txt
* fixed CMake syntax error
* fixed GCC commandline syntax error
2026-06-17 09:00:00 +02:00
joaquintides b785bb5501 fixed Clang 3.8 codegen issue with double_to_size (#354)
* isolated and instrumented test_gh348_2
* fixed Jamfile.v2
* fixed Jamfile.v2
* added more instrumentation
* added more instrumentation
* added more instrumentation
* Clang 3.8 now passes --> codegen issue, retired instrumentation
* tried replacing ternary operator with if/else
* fixed fix
* tried another workaround
* tried another workaround
* tried another workaround
* conditionally applied workaround to Clang < 3.9
* added link to GitHub PR, reverted research traces
2026-05-30 00:46:12 +02:00
02c0fc5faa Fix float bugs in reserve_for_insert and min_buckets (#348)
* Add fix
* regression-tested previous fix, plus regression-tested and fixed adjacent UB bug related to double-to-integer conversion

---------

Co-authored-by: Daniel Kral <daniel.kral@recombee.com>
Co-authored-by: joaquintides <joaquin@tid.es>
2026-05-29 08:57:52 +02:00
joaquintides a67213fbf6 reformulated SFINAE clauses checking key_type completeness (#351)
* added GCC 16 to CI
* replaced usage of apt-key (not present in Ubuntu 26.04)
* created GPG home directory if it doesn't exit (Ubuntu 26.04)
* s/is_complete_and_move_constructible/std::is_move_constructible, made SFINAE invocations of the latter dependent
* split gcc-16 jobs
2026-05-24 12:18:46 +02:00
Braden Ganetsky f1e2fa38b0 Fix issue with constructing an FOA container from a class with a template conversion operator (#334)
* Add missing compile-only tests in CMake

* Rewrite the FOA containers' CFOA constructors so that a class with a template conversion operator does not instantiate the CFOA container

* Rewrite the CFOA containers' FOA constructors so that a class with a template conversion operator does not instantiate the FOA container
2026-03-12 16:29:30 +01:00
joaquintides b00e7c4624 fixed cfoa range insert functions to return the number of elements inserted instead of the size of the input range (#344)
* fixed cfoa range insert functions to return the number of elements inserted instead of the size of the input range

* avoided variable shadowing

* fixed calculation error in test

* updated release notes
2026-02-14 18:08:20 +01:00
Braden Ganetsky df2dfe6140 Fix GDB pretty-printers to work with GCC and C++26 (#342) 2026-01-27 20:47:24 +01:00
joaquintides 09d6416755 made boost::unordered_[multi](map|set)::[const_][local_]iterator instantiable with incomplete value_type (#321)
* made boost::unordered_[multi](map|set)::[const_][local_]iterator instantiable with incomplete value_type
* qualified name to avoid self-definition
2025-10-12 13:14:16 +02:00
joaquintides cc9a787f14 microoptimized unchecked_countr_zero for GCC/Clang 2025-08-26 17:08:01 +02:00
Braden Ganetsky 6fd63ab727 Fix pretty-printers not working when constexpr variables are optimized away (#315)
* Move unordered_printers.hpp into 'detail', where it should have been from the beginning

This is not a public header. It is only meant to be consumed as a transitive include.

* Store self.table instead of self.val

* Fix pretty-printers not working when constexpr variables are optimized away

Also do a few other things.
* `groups` and `elements` are now stored inside `self`
* `mask`, `n0`, and `n` aren't declared ahead of their first assignment
* Remove trailing whitespace

* Update the generated pretty-printer header
2025-08-22 10:15:49 +02:00
joaquintides 59e2a562ed deprecated boost::unordered::hash_is_avalanching in favor of boost::hash_is_avalanching (#313)
* deprecated boost::unordered::hash_is_avalanching in favor of boost::hash_is_avalanching

* replaced deprecation message with simpler BOOST_HEADER_DEPRECATED
2025-06-02 12:43:45 +02:00
joaquintides 3dde65b2ef added pull to open-addressing containers (#309)
* added pull to open-addressing containers

* added pull_tests.cpp

* guarded pull against exceptions in mid init_type construction
2025-04-14 21:47:30 +02:00
Braden Ganetsky 07f6463c1c Fix inline assembly for armv7 target
This fix is based on boostorg/outcome#308
2024-12-29 12:55:49 -06:00
joaquintides fbc981eac9 Merge pull request #292 from k3DW/explicit-instantiation
Ensure each container type can be explicitly instantiated
2024-10-23 16:47:16 +02:00
Braden Ganetsky a36937d9b5 Ensure fca containers have the embedded GDB pretty-printers if none of the [c]foa containers have also been included. (#291)
This was missed in PR #274. We don't yet have automated pretty-printer tests, so this change will have no effect on CI.
2024-10-09 09:54:47 +02:00
Braden Ganetskyandsdarwin e214ecdbd0 Use std::ref instead of copying the function parameter… (#290)
* GHA: revise numerous CI jobs. Fix sanitizer on new kernel

* Use std::ref instead of copying the function parameter in std::initializer_list overloads of insert_{or|and}_[c]visit

* Reimplement detail::is_invocable

* Update docs for std::ref(f) changes

---------

Co-authored-by: sdarwin <samuel.d.darwin@gmail.com>
2024-10-08 17:35:58 +02:00
Braden Ganetsky cfdfae0a65 Ensure each container type can be explicitly instantiated 2024-10-06 22:38:00 -05:00
Braden Ganetsky 3fe7871745 Fix the return value from cfoa 'insert()' overloads to match the docs for iterator-pair and initializer-list 2024-09-26 17:45:33 -05:00
joaquintides 834580b539 added insert_and_visit and similar operations to concurrent containers (#283) 2024-09-21 10:58:30 +02:00
Braden Ganetsky 3f4d5fc567 Put instantiate_[fca] classes into their respective test file, instead of in the headers 2024-09-03 21:17:36 -05:00
joaquintides cd9a592f00 Fixed std::initializer_list assignment issues for open-addressing containers (#277)
* fixed #276

* used range insert, stylistic this->

* assigned non-empty std::initializer_lists
2024-09-02 18:56:13 +02:00
Braden Ganetsky 1b0037135c Add concurrent_node containers to the GDB pretty-printer script 2024-08-25 13:01:49 -05:00
joaquintides f734e399e3 Feature/concurrent node containers (#271)
* added concurrent node containers

* removed spurious typename

* added missing includes

* avoided unused param warning

* worked around Clang bug

* s/{}/() to work around GCC4.8 problems with aggregate initialization

* used /bigobj for cfoa/visit_tests.cpp

* suppressed localized maybe-uninitialized warnings

* fixed comments

* added /bigobj to cfoa/insert_tests.cpp

* instrumented double exact comparison to spot a spurious error

* fixed pedantic error

* refactored byte_span machinery

* compromised on sub-epsilon equality for doubles that should be identical

* documented boost::concurrent_node_(map|set)

* added concurrent_node_set

* added missing AlternativeType

* tested empty node insertion

* tested node_handle allocator management

* added nonassignable_allocator and node_handle_allocator_swap_tests

* fixed warning disabling

* silenced spurious GCC warning

* broadened scope of previous pragma

* broadened even more

* worked around spurious constexpr-related msvc-14.0 bug
https://godbolt.org/z/v78545Ebf

* added workaround back

* replaced previous workaround with built-in one

* added workaround back on top of built-in solution (which doesn't work 100% of the time)
2024-08-25 18:34:58 +02:00
Braden Ganetsky 111a503195 Generate inline assembly header file for automatic GDB pretty-printer script inclusion 2024-08-22 18:56:24 -05:00
Braden Ganetsky a14b159665 Add missing calls to as_const(), otherwise we may call a 'T(T&)' constructor instead of the intended 'T(T const&)' 2024-08-07 16:15:36 -05:00
Braden Ganetsky 793fad5620 Run clang-format on the 'types' files 2024-08-07 16:09:15 -05:00
Braden Ganetsky c117f4448f static_assert on the constructibility of the containers' types 2024-08-07 16:09:15 -05:00
Braden Ganetsky 65f3ea60dd Use as_const to remove any possibility of use-after-move (#272) 2024-08-06 15:48:13 +02:00
joaquintides 1d1f0d306d Feature/nonconst set visit (#265)
* Made some boost::concurrent_flat_set operations exclusive-locked

* unnamed unused args

* fixed PR number

* replaced homemade mechanism with boost::compat::latch
2024-07-16 19:50:08 +02:00
Braden Ganetsky 7ddd562532 Implement natvis for fancy pointers (#262)
* Add file for manual natvis testing

* Equip natvis file to allow fancy pointers

* Update docs

* [skip ci] add links to natvis docs
2024-07-15 19:42:28 +02:00
joaquintidesandPeter Dimov e3818afd45 test interprocess concurrency (#258)
* added cfoa_interprocess_concurrency_tests

* avoided C++14 digit separators

* stopped using exit codes to pass numerical info to parent

* Reorder includes to make msvc-14.0 happy

* made cumulative_stats interprocess concurrency safe

* disabled interprocess_concurrency_tests for Clang 3.5-8
(Boost.Process compile error)

* made test names shorter for the benefit of MINGW32

---------

Co-authored-by: Peter Dimov <pdimov@gmail.com>
2024-06-22 09:13:30 +02:00
joaquintides 5827bf2574 gotten rid of redundant base1, base2 and base3 2024-06-03 18:53:24 +02:00
Braden Ganetsky 0a66c687fd Write natvis for foa and cfoa containers 2024-06-01 09:26:37 -05:00
joaquintides 401b06663f forced a compile error when Hash::is_avalanching is not a type 2024-05-30 09:11:06 +02:00
joaquintides 7e9032c703 s/UB/ill-formed 2024-05-30 09:08:07 +02:00
joaquintides f77bdb9b67 updated is_avalanching trait protocol 2024-05-29 19:51:32 +02:00
joaquintides 4c0aea983e made reset_stats noexcept 2024-05-06 13:26:30 +02:00
joaquintides 22d8cca03b added stats to bulk visitation 2024-05-05 17:56:03 +02:00
joaquintides c1317cb5be replaced get_cumulative_stats() with direct access to cstats 2024-05-03 18:11:13 +02:00
joaquintides 223f64752d implemented proper stats handling on concurrent<->unordered move construction 2024-05-03 18:04:21 +02:00
joaquintides 8452b30608 implemented proper stats handling on move assignment 2024-05-02 20:41:27 +02:00
joaquintides ee77a65fae added missing typename 2024-05-01 20:32:12 +02:00
joaquintides e588e04a1b swapped stats on move construction/assignment 2024-05-01 18:11:01 +02:00
joaquintides d01ae76074 grouped cumulative_stats summarization in one operation 2024-05-01 16:34:53 +02:00
joaquintides 5feb7459ee added stat counts 2024-04-30 19:18:15 +02:00
joaquintides 83abd9cc4e avoided -Wextra-semi-stmt warning 2024-04-30 17:49:52 +02:00
joaquintides 648f6fd23e protected cumulative_stats against count wraparound 2024-04-30 17:32:53 +02:00
joaquintides 2d8fd43cc4 editorial 2024-04-30 17:25:10 +02:00
joaquintides 9806e75cc9 added stats to boost::concurrent_flat_set 2024-04-29 20:32:27 +02:00
joaquintides 76c460a703 grouped foa::table_core cumulative stats in one member 2024-04-29 20:30:16 +02:00