What's Changed
Infrastructure Changes
- Migrate CMake infrastructure to copacabana
- Integration tests are now run on merge to main.
- Improved warnings setup in Unit Tests
- CI now tests for:
- Android
- ICPX
- Mac OS X 14
- Visual Studio cl.exe
- Visual Studio clang-cl.exe
- WASM
- Documentation is now automatically built on merge to stop polluting PRs.
- People can use https://jfalcou.github.io/kumi/kumi.tag as a Doxygen Tag File in their own documentation.
New Features
- Optimize certain data layout and type computation to reduce symbol length.
- Add KUMI_TRIVIAL macro to ensure inlining of key functionalities.
- Add support for homogeneous tuple detection.
- Implement copy-efficient partition.
- Implement apply_traits that computes the result of a traits being applied to all elements of a product type.
- Add support for
std::invoke
-like calls inapply
, contributed by @jehelset. - Add
std::array
as a product type, contributed by @jehelset. - Allow for automatic std adaptation to be disengaged via macro.
Bug Fixes
- Fix #55 - Shortcut to pure fold expression whenever possible in reduction.
- Fix #64 - Adapt kumi::tuple to std::common_reference.
- Fix #69 - Better apply and for_each SFINAE compliance.
- Fix #70 - Sign issue with iota.
- Fix #71 - Support for eductions without init values.
- Fix #77 - Adjust type computation of cat, contributed by @jehelset.
- Fix as_tuple to work with non-product type value type.
- Fix predicates to work with non-product type.
- Fix sign issue with count.
- Fix SFINAE compliance of comparisons operator when used on tuples with non-comparables elements.
- Fix the definition of the non-empty product type concept.
- Fix unqualified make_tuple calls that ADL clashed with std::make_tuple.
- Remove useless != and fix size related checks on comparisons operators.
Full Changelog: v3.0...v3.1