@@ -15,7 +15,12 @@ See the library header at
1515``` cpp
1616namespace eggs
1717{
18- template <typename Value, auto Value::*Key>
18+ template <
19+ typename Value,
20+ auto Key,
21+ typename Compare = std::less<key-type>,
22+ typename Allocator = std::allocator<Value>
23+ >
1924 class keyed_set;
2025}
2126```
@@ -54,11 +59,12 @@ eggs::keyed_set<Employee, &Employee::id> from_vec(std::from_range, vec);
5459## Requirements
5560
5661The library requires a C++23-conformant compiler and standard library.
57- It has been tested with:
62+ It is continuously tested with:
5863
59- - GCC 14+
60- - Clang 17+ (with libc++ or libstdc++)
61- - MSVC 19.38+ (VS 2022 17.8+)
64+ - GCC 14 and 16
65+ - Clang 18 and 22 (libstdc++ and libc++)
66+ - MSVC 2022 and 2026
67+ - Clang-CL 20 (Windows)
6268
6369There are no external dependencies.
6470
@@ -82,56 +88,33 @@ target_link_libraries(my_target PRIVATE Eggs::KeyedSet)
8288| Option (top-level) | Option (subdirectory) | Default | Description |
8389| ---| ---| ---| ---|
8490| ` BUILD_TESTING ` | ` EGGS_KEYED_SET_BUILD_TESTING ` | ` ON ` / ` OFF ` | Build the test suite |
85- | ` BUILD_EXAMPLE ` | ` EGGS_KEYED_SET_BUILD_EXAMPLE ` | ` ON ` / ` OFF ` | Build the example |
91+ | ` BUILD_EXAMPLES ` | ` EGGS_KEYED_SET_BUILD_EXAMPLES ` | ` ON ` / ` OFF ` | Build the examples |
8692| ` ENABLE_INSTALL ` | ` EGGS_KEYED_SET_ENABLE_INSTALL ` | ` ON ` / ` OFF ` | Install the library |
8793
8894### Configuring and building with presets
8995
9096The project ships a ` CMakePresets.json ` with named configurations for the
91- most common workflows. CMake 3.23 or later is required to use presets.
97+ most common workflows. CMake 3.25 or later is required to use presets.
9298
9399``` sh
94100# List all available presets
95101cmake --list-presets
96102
97- # Configure + build + test in one go (system compiler , Debug)
98- cmake --preset dev
99- cmake --build --preset dev
100- ctest --preset dev
103+ # Configure, build, and test (GCC , Debug)
104+ cmake --preset dev-gcc
105+ cmake --build --preset dev-gcc-debug
106+ ctest --preset dev-gcc-debug
101107
102- # Explicit toolchain variants
103- cmake --preset dev-gcc && cmake --build --preset dev-gcc && ctest --preset dev-gcc
104- cmake --preset dev-clang && cmake --build --preset dev-clang && ctest --preset dev-clang
105-
106- # Release build
107- cmake --preset release-gcc && cmake --build --preset release-gcc
108-
109- # Address + UB sanitizers
110- cmake --preset asan && cmake --build --preset asan && ctest --preset asan
111-
112- # Thread sanitizer
113- cmake --preset tsan && cmake --build --preset tsan && ctest --preset tsan
114-
115- # Visual Studio 2022 (multi-config)
116- cmake --preset vs2022
117- cmake --build --preset vs2022-debug
118- ctest --preset vs2022
108+ # Other toolchain variants
109+ cmake --preset dev-clang # Clang with libstdc++
110+ cmake --preset dev-clang-libcxx # Clang with libc++
111+ cmake --preset dev-msvc # MSVC x64
112+ cmake --preset dev-clang-cl # Clang-CL x64
119113```
120114
121115Build trees land in ` build/<preset-name>/ ` so all presets coexist without
122116interfering.
123117
124- #### Local overrides
125-
126- Copy the provided ` CMakeUserPresets.json ` template (it is ` .gitignore ` d)
127- to point at a specific compiler installation, set a custom install prefix,
128- or wire in a vcpkg / Conan toolchain:
129-
130- ``` sh
131- # Example: use a locally built GCC 15
132- cmake --preset dev-gcc15 # defined only in your CMakeUserPresets.json
133- ```
134-
135118## C++26 AssociativeContainer conformance
136119
137120` keyed_set ` satisfies every expression listed in
0 commit comments