Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
269 commits
Select commit Hold shift + click to select a range
b37931c
Cleanups for `<flat_set>` (#4064)
achabense Oct 3, 2023
b9fee9b
Merge branch 'main' into flat_set-17.8p3
StephanTLavavej Oct 14, 2023
6e7745f
Merge pull request #4089 from StephanTLavavej/flat_set-17.8p3
StephanTLavavej Oct 14, 2023
4c866ae
`<flat_set>`: the copy/move functions should be user-defined (#4079)
achabense Oct 18, 2023
7526405
Merge branch 'main' into flat_set-feature-test-macro-test
StephanTLavavej Oct 20, 2023
b07c9db
Update and fix the feature-test macro test.
StephanTLavavej Oct 20, 2023
213b157
Merge pull request #4112 from StephanTLavavej/flat_set-feature-test-m…
StephanTLavavej Oct 21, 2023
a75edc9
`<flat_set>`: Test transparent insertion and more (#4084)
achabense Oct 23, 2023
cf59a16
`<flat_set>`: `flat_(multi)set`'s `iterator` type should be constant …
achabense Nov 7, 2023
5960f79
`<flat_set>`: Correct allocator-extended constructors for `flat_(mult…
frederick-vs-ja Nov 10, 2023
ff90852
`<flat_set>`: Restore insertion in `flat_(multi)set`'s iterator-pair/…
frederick-vs-ja Nov 13, 2023
40ca8b4
Merge branch 'main' into merge-flat_set
StephanTLavavej Nov 17, 2023
35dc14f
Merge pull request #4205 from StephanTLavavej/merge-flat_set
StephanTLavavej Nov 17, 2023
ef9db25
Merge branch 'main' into flat_set-codeql
StephanTLavavej Nov 17, 2023
a55c5ff
Merge pull request #4207 from StephanTLavavej/flat_set-codeql
StephanTLavavej Nov 17, 2023
26faa20
Merge branch 'main' into flat_set-vs17.9p2
StephanTLavavej Dec 14, 2023
bd59fb7
clang-format, no manual changes.
StephanTLavavej Dec 14, 2023
28718f7
Merge pull request #4262 from StephanTLavavej/flat_set-vs17.9p2
StephanTLavavej Dec 14, 2023
bca8f68
Merge branch 'main' into flat_set-llvm
StephanTLavavej Dec 15, 2023
29dfcee
Merge pull request #4266 from StephanTLavavej/flat_set-llvm
StephanTLavavej Dec 15, 2023
c606acf
Merge branch 'main' into flat_set-followup
StephanTLavavej Dec 16, 2023
45b3bf3
Merge pull request #4269 from StephanTLavavej/flat_set-followup
StephanTLavavej Dec 16, 2023
5734bd0
Merge branch 'main' into merge-flat_set
StephanTLavavej Jan 11, 2024
9890ec6
Merge pull request #4307 from StephanTLavavej/merge-flat_set
StephanTLavavej Jan 12, 2024
8e0f015
[WIP] Implementation of <flat_map> (#3896)
duanqn Jan 12, 2024
2355b8c
`<flat_map>`: Remove `zip_view` dependency and other cleanups (#4315)
frederick-vs-ja Jan 16, 2024
4d0d341
Merge branch 'main' into merge-flat_map
StephanTLavavej Jan 17, 2024
674dcb1
Merge branch 'main' into merge-flat_set
StephanTLavavej Jan 17, 2024
6aae422
Merge pull request #4325 from StephanTLavavej/merge-flat_map
StephanTLavavej Jan 17, 2024
20e9a3d
Merge pull request #4326 from StephanTLavavej/merge-flat_set
StephanTLavavej Jan 17, 2024
00c2324
`<flat_map>`: Fix overloads and complete deduction guides and `erase_…
frederick-vs-ja Jan 25, 2024
176ceee
`<flat_map>` Fix compile errors (#4344)
duckdoom5 Jan 29, 2024
fdd2b35
Merge branch 'main' into merge-flat_map
StephanTLavavej Jan 31, 2024
9ec5e10
Merge branch 'main' into merge-flat_set
StephanTLavavej Jan 31, 2024
473bb93
Merge pull request #4352 from StephanTLavavej/merge-flat_map
StephanTLavavej Jan 31, 2024
dfea711
Merge pull request #4353 from StephanTLavavej/merge-flat_set
StephanTLavavej Jan 31, 2024
d7dbbc3
Merge branch 'main' into merge-flat_map
StephanTLavavej Feb 6, 2024
510c1eb
Update `_HAS_CXX23` guard in `<flat_map>`.
StephanTLavavej Feb 6, 2024
99a19de
Add a feature-test macro test.
StephanTLavavej Feb 6, 2024
9a55199
Merge branch 'main' into merge-flat_set
StephanTLavavej Feb 6, 2024
d5d65bc
`concepts_latest_matrix.lst` => `usual_latest_matrix.lst`
StephanTLavavej Feb 6, 2024
132f64c
Update `_HAS_CXX23` guard in `<flat_set>`.
StephanTLavavej Feb 6, 2024
8a2cec7
Add `flat_map` to P1502R1_standard_library_header_units.
StephanTLavavej Feb 6, 2024
76d9b20
std.ixx: Guard `<flat_map>` with `_HAS_CXX23`.
StephanTLavavej Feb 6, 2024
3fb0e89
Add flat_map to include_each_header_alone_matrix.lst.
StephanTLavavej Feb 6, 2024
8a52d0c
Merge pull request #4368 from StephanTLavavej/merge-flat_map
StephanTLavavej Feb 7, 2024
de27957
Merge pull request #4369 from StephanTLavavej/merge-flat_set
StephanTLavavej Feb 7, 2024
5687099
`<flat_map>`: Re-enable `/permissive` with miscellaneous fixes and te…
frederick-vs-ja Feb 12, 2024
c2b25f3
Merge branch 'main' into merge-flat_map
StephanTLavavej Feb 16, 2024
bb4ec4b
Merge branch 'main' into merge-flat_set
StephanTLavavej Feb 16, 2024
2c53614
Merge pull request #4396 from StephanTLavavej/merge-flat_map
StephanTLavavej Feb 16, 2024
96ee59b
Merge pull request #4397 from StephanTLavavej/merge-flat_set
StephanTLavavej Feb 16, 2024
a3bc9c7
`<flat_map>`: Various cleanups and bug fixes (#4468)
frederick-vs-ja Mar 13, 2024
8e8edbf
Merge branch 'main' into merge-flat_map
StephanTLavavej Mar 16, 2024
541bcae
Merge branch 'main' into merge-flat_set
StephanTLavavej Mar 16, 2024
cd02663
Merge pull request #4482 from StephanTLavavej/merge-flat_map
StephanTLavavej Mar 16, 2024
a168f9d
Merge pull request #4483 from StephanTLavavej/merge-flat_set
StephanTLavavej Mar 16, 2024
8762563
`<flat_map>`: flat_multimap construction test (#4566)
AlexGuteniev Apr 7, 2024
26a4bbc
Merge branch 'main' into merge-flat_map
StephanTLavavej Apr 12, 2024
db05784
Merge branch 'main' into merge-flat_set
StephanTLavavej Apr 12, 2024
cb5005b
Merge pull request #4580 from StephanTLavavej/merge-flat_map
StephanTLavavej Apr 12, 2024
358ab3b
Merge pull request #4581 from StephanTLavavej/merge-flat_set
StephanTLavavej Apr 12, 2024
0f5adda
`<flat_map>`: more `flat_multimap` coverage copied from `flat_map` (#…
AlexGuteniev Apr 15, 2024
878ac68
Merge branch 'main' into merge-flat_map
StephanTLavavej Apr 19, 2024
a1a92d6
Merge branch 'main' into merge-flat_set
StephanTLavavej Apr 19, 2024
5a8e601
Merge pull request #4601 from StephanTLavavej/merge-flat_map
StephanTLavavej Apr 19, 2024
cb88685
Merge pull request #4602 from StephanTLavavej/merge-flat_set
StephanTLavavej Apr 19, 2024
5b10538
`<flat_map>`: Unwrap `flat_(multi)map`'s iterators (#4650)
frederick-vs-ja May 11, 2024
6b62632
Merge branch 'main' into merge-flat_map
StephanTLavavej May 23, 2024
6d6b2d6
Merge branch 'main' into merge-flat_set
StephanTLavavej May 23, 2024
afeb4f4
Merge pull request #4690 from StephanTLavavej/merge-flat_map
StephanTLavavej May 23, 2024
890d000
Merge pull request #4691 from StephanTLavavej/merge-flat_set
StephanTLavavej May 23, 2024
be61c29
Merge branch 'main' into merge-flat_map
StephanTLavavej Jun 18, 2024
259c177
Merge branch 'main' into merge-flat_set
StephanTLavavej Jun 18, 2024
8f11937
Merge pull request #4735 from StephanTLavavej/merge-flat_map
StephanTLavavej Jun 18, 2024
29ea8e9
Merge pull request #4736 from StephanTLavavej/merge-flat_set
StephanTLavavej Jun 18, 2024
2dd7ea9
Merge branch 'main' into duanqn/flat_map
duanqn Jul 1, 2024
73f9694
Merge pull request #4774 from duanqn/duanqn/flat_map
StephanTLavavej Jul 1, 2024
1d8e8e2
Fix insert for flat_map and flat_multimap (#4778)
duanqn Jul 10, 2024
0d6df8b
`<flat_map>`: Fix ordering in insertion and access control in constru…
frederick-vs-ja Jul 11, 2024
baacc79
Merge branch 'main' into merge-flat_map
StephanTLavavej Jul 11, 2024
cd6f83a
Merge branch 'main' into merge-flat_set
StephanTLavavej Jul 11, 2024
41c773f
Merge pull request #4832 from StephanTLavavej/merge-flat_map
StephanTLavavej Jul 12, 2024
5b6010e
Merge pull request #4833 from StephanTLavavej/merge-flat_set
StephanTLavavej Jul 12, 2024
c5704d3
Merge branch 'main' into merge-flat_map
StephanTLavavej Aug 15, 2024
a765646
Merge branch 'main' into merge-flat_set
StephanTLavavej Aug 15, 2024
c726d8f
Merge pull request #4891 from StephanTLavavej/merge-flat_map
StephanTLavavej Aug 15, 2024
f26893f
Merge pull request #4892 from StephanTLavavej/merge-flat_set
StephanTLavavej Aug 15, 2024
f00e991
Merge branch 'main' into reformat-flat_map
StephanTLavavej Sep 12, 2024
9618209
Regen clang-format, no manual changes.
StephanTLavavej Sep 12, 2024
770b2fc
Merge branch 'main' into reformat-flat_set
StephanTLavavej Sep 12, 2024
f8acc4f
Regen clang-format, no manual changes.
StephanTLavavej Sep 12, 2024
7bd29ca
Add newlines to avoid long long lines.
StephanTLavavej Sep 12, 2024
f6805ee
Merge pull request #4949 from StephanTLavavej/reformat-flat_set
StephanTLavavej Sep 12, 2024
3bdfd74
Merge pull request #4948 from StephanTLavavej/reformat-flat_map
StephanTLavavej Sep 12, 2024
0e281d0
Merge remote-tracking branch 'origin/feature/flat_set' into flat_map
CaseyCarter Sep 20, 2024
46cc8e7
Eliminate duplicate definitions of `sorted_unique` et al.
CaseyCarter Sep 20, 2024
9477260
Merge pull request #4967 from CaseyCarter/flat_map
CaseyCarter Sep 20, 2024
c02b6d6
Merge remote-tracking branch 'origin/main' into flat_map
CaseyCarter Sep 20, 2024
86ca2d3
Move `sorted_unique` et al. into `<vector>`
CaseyCarter Sep 20, 2024
af123ee
Merge pull request #4969 from CaseyCarter/flat_map-merge
CaseyCarter Sep 20, 2024
4a24161
Merge branch 'main' into merge-flat_map
StephanTLavavej Oct 17, 2024
6c18dc4
Merge pull request #5021 from StephanTLavavej/merge-flat_map
StephanTLavavej Oct 17, 2024
dc266ed
Add visualizer for `std::flat_map` (#4887)
Nerixyz Oct 24, 2024
f6a6a2a
Merge branch 'main' into merge-flat_map
StephanTLavavej Oct 28, 2024
c819e49
Merge pull request #5052 from StephanTLavavej/merge-flat_map
StephanTLavavej Oct 28, 2024
027f330
Reject `vector<bool>` and deduplicate mechanisms for `flat_meow` (#5045)
frederick-vs-ja Oct 29, 2024
aa91f3f
Merge branch 'main' into merge-flat_map
StephanTLavavej Oct 30, 2024
fbe5394
Merge pull request #5055 from StephanTLavavej/merge-flat_map
StephanTLavavej Oct 30, 2024
16df2e6
Merge branch 'main' into merge-flat_map
StephanTLavavej Nov 14, 2024
088187f
Merge pull request #5085 from StephanTLavavej/merge-flat_map
StephanTLavavej Nov 14, 2024
53a43ef
Merge branch 'main' into merge-flat_map
StephanTLavavej Dec 13, 2024
de6c066
Merge pull request #5189 from StephanTLavavej/merge-flat_map
StephanTLavavej Dec 13, 2024
b68983d
Merge branch 'main' into merge-flat_map
StephanTLavavej Jan 24, 2025
9401dbc
clang-format, no manual changes: Improve CTAD.
StephanTLavavej Jan 24, 2025
85bd0d9
Update libcxx/expected_results.txt for flat_map.
StephanTLavavej Jan 24, 2025
9297219
Mark x64-specific failures as SKIPPED.
StephanTLavavej Jan 24, 2025
797b6f3
Merge pull request #5250 from StephanTLavavej/merge-flat_map
StephanTLavavej Jan 24, 2025
3106741
Merge branch 'main' into merge-flat_map
StephanTLavavej Jan 29, 2025
ef7c3fc
Merge pull request #5258 from StephanTLavavej/merge-flat_map
StephanTLavavej Jan 29, 2025
d0b4d2d
Merge branch 'main' into merge-flat_map
StephanTLavavej Feb 20, 2025
844dd56
Merge pull request #5305 from StephanTLavavej/merge-flat_map
StephanTLavavej Feb 20, 2025
41b1826
`<flat_map>`: Fix several bugs found by libcxx tests (#5306)
frederick-vs-ja Mar 13, 2025
608e4fa
Merge branch 'main' into merge-flat_map
StephanTLavavej Mar 13, 2025
33349a4
Merge pull request #5339 from StephanTLavavej/merge-flat_map
StephanTLavavej Mar 13, 2025
956149e
Add visualizer for `std::flat_set` and flat-map iterators (#5353)
Nerixyz Mar 24, 2025
d1b6318
Merge branch 'main' into merge-flat_map
StephanTLavavej Mar 25, 2025
e54056f
Recategorize libcxx failures from scratch.
StephanTLavavej Mar 25, 2025
56d4f84
Merge pull request #5357 from StephanTLavavej/merge-flat_map
StephanTLavavej Mar 25, 2025
8f584f4
Fix [flat.map.access] bugs found by libcxx tests (#5414)
seishun Apr 17, 2025
058de5c
Fix [flat.map.modifiers] bugs found by libcxx tests (#5419)
seishun Apr 19, 2025
2fabe62
`<flat_map>`: Restore use of `push_back` in `flat_(multi)map::insert`…
frederick-vs-ja Apr 21, 2025
f88263f
Merge branch 'main' into merge-flat_map
StephanTLavavej Apr 22, 2025
30abbdd
Merge pull request #5426 from StephanTLavavej/merge-flat_map
StephanTLavavej Apr 23, 2025
0e90092
`<flat_map>`: explain test failures caused by being moved-out (#5451)
AlexGuteniev May 1, 2025
9299901
`<flat_map>`: Workaround for CWG-2369 in deduction guides (#5455)
frederick-vs-ja May 1, 2025
5a1bf15
`<flat_map>`: move invariants preserving (#5454)
AlexGuteniev May 2, 2025
3252573
`<flat_map>`: drop bogus exception specifications (#5460)
AlexGuteniev May 2, 2025
d2e3e14
`<flat_set>`: Fix some significant bugs caught by latest libcxx tests…
frederick-vs-ja May 2, 2025
3280d7e
Make implementation details of `flat_meow` more similar (#5474)
frederick-vs-ja May 9, 2025
8b1ec13
Merge branch 'main' into merge-flat_map
StephanTLavavej May 10, 2025
d05e29c
Categorize flat_set failures.
StephanTLavavej May 10, 2025
66fbe72
Merge pull request #5486 from StephanTLavavej/merge-flat_map
StephanTLavavej May 10, 2025
208001b
Use the `_Transparent` concept for `flat_meow` (#5499)
frederick-vs-ja May 12, 2025
8d7368c
`<flat_set>`: some libc++ tests look bogus (#5508)
AlexGuteniev May 15, 2025
bfa5444
`<flat_set>`: insert range invariant fix (#5514)
AlexGuteniev May 17, 2025
97f5f76
Merge branch 'main' into merge-flat_map
StephanTLavavej May 17, 2025
5a05922
Merge pull request #5515 from StephanTLavavej/merge-flat_map
StephanTLavavej May 17, 2025
bbef8e8
`<flat_set>`: more invariants fixes (#5516)
AlexGuteniev May 18, 2025
e20fc34
`<flat_map>`: Remove unreachable code (#5520)
seishun May 18, 2025
2c570f3
Revert incorrect `<flat_set>` change, and update test failure reason …
AlexGuteniev May 18, 2025
20b11b5
Merge branch 'main' into merge-flat_map
StephanTLavavej Jun 14, 2025
5385a5a
Merge pull request #5585 from StephanTLavavej/merge-flat_map
StephanTLavavej Jun 14, 2025
6cde930
Merge branch 'main' into merge-flat_map
StephanTLavavej Jul 15, 2025
fb8fde7
Merge pull request #5648 from StephanTLavavej/merge-flat_map
StephanTLavavej Jul 16, 2025
4537edf
Merge branch 'main' into merge-flat_map
StephanTLavavej Aug 16, 2025
8d98a47
Merge pull request #5680 from StephanTLavavej/merge-flat_map
StephanTLavavej Aug 17, 2025
e529e37
Merge branch 'main' into flat_map-llvm
StephanTLavavej Aug 26, 2025
1d66330
Merge pull request #5697 from StephanTLavavej/flat_map-llvm
StephanTLavavej Aug 27, 2025
67c4a9f
`<flat_map>`, `<flat_set>`: mark unused variables and typedef libc++ …
AlexGuteniev Aug 28, 2025
5f24d81
Merge branch 'main' into merge-flat-map
StephanTLavavej Sep 15, 2025
438a556
Merge pull request #5722 from StephanTLavavej/merge-flat-map
StephanTLavavej Sep 15, 2025
229e74a
Merge branch 'main' into merge-flat_map
StephanTLavavej Oct 17, 2025
71977b1
Mark flat.map.observers and flat.multimap.observers tests as FAIL for…
StephanTLavavej Oct 17, 2025
01b02f2
Merge pull request #5789 from StephanTLavavej/merge-flat_map
StephanTLavavej Oct 17, 2025
ca1ff80
Merge branch 'main' into merge-flat_map
StephanTLavavej Nov 19, 2025
15b0fd1
Merge pull request #5884 from StephanTLavavej/merge-flat_map
StephanTLavavej Nov 20, 2025
5582404
Merge branch 'main' into merge-flat_map
StephanTLavavej Nov 28, 2025
42cd3da
Some tests are now passing.
StephanTLavavej Nov 28, 2025
042eb7b
Categorize new failures.
StephanTLavavej Nov 28, 2025
744ec4b
Merge pull request #5915 from StephanTLavavej/merge-flat_map
StephanTLavavej Nov 28, 2025
f09869f
Implement P3567R2 `flat_meow` Fixes (#5882)
frederick-vs-ja Dec 1, 2025
06b512b
flat_multiset::emplace_hint() shall place as close as possible to pro…
vmichal Dec 1, 2025
2ae511b
`flat_[multi]set(initializer_list, ...)` constructors shall not invok…
vmichal Dec 4, 2025
17a08c6
Merge branch 'main' into flat_meow
StephanTLavavej Dec 4, 2025
7e2032d
std.ixx: Avoid interleaving conditional includes.
StephanTLavavej Dec 4, 2025
384c44e
Clarify "leaf-most" comment.
StephanTLavavej Dec 5, 2025
b781355
`<vector>`'s `_Clear_guard` shadows/supersedes `_Hash::_Clear_guard`.
StephanTLavavej Dec 5, 2025
44835ba
flat_map: Consistently use CTAD for `_Clear_guard`.
StephanTLavavej Dec 5, 2025
d4b57d6
flat_set: Consistently use CTAD and `this/_Other` for `_Clear_guard`.
StephanTLavavej Dec 5, 2025
c3e82cb
flat_map and flat_multimap don't need `using _MyBase::_Erase_if;`.
StephanTLavavej Dec 5, 2025
d1d9b1c
flat_set: Centralize `_Erase_if`.
StephanTLavavej Dec 5, 2025
f4a2c5d
Need to report a Down With Typename bug to EDG.
StephanTLavavej Dec 5, 2025
10a29be
flat_map: `_Erase_if` and the friendship can be private to the base c…
StephanTLavavej Dec 5, 2025
7b22f59
Merge pull request #5938 from StephanTLavavej/flat_meow
StephanTLavavej Dec 5, 2025
ae02143
Merge branch 'main' into flat-map-2
StephanTLavavej Dec 9, 2025
853c42c
`<flat_map>`: `_MyBase` => `_Mybase`
StephanTLavavej Dec 9, 2025
a02765f
Use `_MSVC_NO_UNIQUE_ADDRESS`.
StephanTLavavej Dec 9, 2025
4670e79
flat_map: Order _Data before _Key_compare, following the Standard.
StephanTLavavej Dec 9, 2025
11a14e8
flat_map: Use braces to construct `value_compare` temporaries.
StephanTLavavej Dec 9, 2025
9b174b7
Add coverage to GH_000545_include_compare.
StephanTLavavej Dec 9, 2025
905da0f
Fix GH 5075 `<flat_map>`: Can we separately compare key and mapped co…
StephanTLavavej Dec 9, 2025
062c918
Consistently modify containers before comparators.
StephanTLavavej Dec 9, 2025
17f1f5d
Consistently comment "// intentionally copy comparator, see LWG-2227".
StephanTLavavej Dec 9, 2025
9a4563e
Construct from _Flat_set_base _Other instead of _Derived _Set.
StephanTLavavej Dec 9, 2025
61bde13
flat_map: Refine _Emplace_hint _STL_INTERNAL_STATIC_ASSERT.
StephanTLavavej Dec 9, 2025
bbd8a7b
Update flat_map::at exceptions to match classic. (Without "<K, T>" wh…
StephanTLavavej Dec 9, 2025
ae1b197
Overhaul static_asserts and Standard citations.
StephanTLavavej Dec 9, 2025
6b59aa1
Push/undef/pop "msvc".
StephanTLavavej Dec 9, 2025
011ec12
Merge pull request #5952 from StephanTLavavej/flat-map-2
StephanTLavavej Dec 9, 2025
136c6cd
Merge branch 'main' into merge-flat-map
StephanTLavavej Dec 12, 2025
860ccb3
Enable passing tests! <3 <3 <3 =^..^=
StephanTLavavej Dec 12, 2025
e845cc9
Merge pull request #5958 from StephanTLavavej/merge-flat-map
StephanTLavavej Dec 12, 2025
18e1eb5
`<flat_map>` `<flat_set>`: Add `_NODISCARD`, remove nested `_Clear_gu…
vmichal Dec 12, 2025
eff33b6
`<flat_set>`: Make `flat_(multi)set` insertion exception-safe for non…
frederick-vs-ja Jan 5, 2026
06449cd
Add test coverage for `<flat_set>` to `test_header_units_and_modules.…
vmichal Jan 5, 2026
15d9eff
`<flat_map>`: Simplify duplicate definitions of lookup functions usin…
vmichal Jan 5, 2026
4975692
`<flat_map>`: Ensure different flat_(multi)map specializations don't …
vmichal Jan 5, 2026
bad73e6
`<flat_map>`: Unify implementation of `emplace` and `insert` between …
vmichal Jan 5, 2026
aed9711
`<flat_meow>`: Misc changes: `const` locals and parameters, more `_ST…
vmichal Jan 6, 2026
8aba27d
`<flat_set>`: `flat_set::emplace` and `emplace_hint` should be constr…
vmichal Jan 8, 2026
f8ff3c6
`<flat_meow>`: Don't do extra work in `count()`, `contains()`, and `e…
vmichal Jan 8, 2026
499235a
`<flat_map>`: Minor cleanups of iterator operations in flat_map membe…
vmichal Jan 8, 2026
7d6bac8
`<flat_meow>`: Add tests for all `flat_map` constructors, deduction g…
vmichal Jan 11, 2026
353c169
Properly cite EDG bug affecting C++20 Down With Typename (#6008)
StephanTLavavej Jan 13, 2026
7dc8050
Merge branch 'main' into merge-flat-map
StephanTLavavej Jan 15, 2026
fd076f6
Update libcxx failures.
StephanTLavavej Jan 15, 2026
31854d2
Merge pull request #6014 from StephanTLavavej/merge-flat-map
StephanTLavavej Jan 15, 2026
6634774
`<flat_meow>`: Minor cleanups - Use member `begin`/`end` when possibl…
vmichal Jan 15, 2026
d86d691
`<flat_meow>`: Implement natvis visualizers for `flat_multimeow`, sim…
vmichal Jan 16, 2026
9068390
`<flat_map>`: Fix new libcxx test failure due to argument type mismat…
vmichal Jan 16, 2026
f7961e7
`<flat_set>`, `<flat_map>`: compare for equality instead of equivalen…
AlexGuteniev Jan 20, 2026
9f1c96d
Merge branch 'main' into no-mister-bond-i-expect-you-to-merge
StephanTLavavej Jan 21, 2026
d5d3ac2
Switch to Standard mode checks.
StephanTLavavej Jan 21, 2026
29e5fd0
Merge pull request #6033 from StephanTLavavej/no-mister-bond-i-expect…
StephanTLavavej Jan 21, 2026
85e190e
`<flat_meow>`: Minor cleanups (#6034)
StephanTLavavej Jan 21, 2026
d935258
`<flat_map>`: Make `_Pairing_iterator_provider::_Iterator` debugging …
vmichal Jan 22, 2026
8c5ec8d
Pass a tinier `value_compare`-like comparator to algorithms (#6038)
frederick-vs-ja Jan 22, 2026
0da1a88
`<flat_meow>`: Remove FIXME comments, add `_Clear_guard` to `erase()`…
StephanTLavavej Jan 23, 2026
21cc7b6
`<flat_map>`, `<flat_set>`: Use inverse key_compare instead of synthe…
AlexGuteniev Jan 23, 2026
94b627b
`<flat_set>`: Use `_STD equal` instead of `_RANGES equal` in `operato…
AlexGuteniev Jan 23, 2026
a1b6e7a
Cleanup/fix `flat_map` tests, update citations (#6046)
StephanTLavavej Jan 23, 2026
4871236
Cleanup/improve `flat_set` tests (#6051)
StephanTLavavej Jan 27, 2026
b86e0c9
`<flat_meow>`: Update older tests (#6056)
JMazurkiewicz Jan 29, 2026
64904f8
`<flat_meow>`: Audit the implementation (#6057)
StephanTLavavej Jan 29, 2026
e48f71b
Merge branch 'main' into the-penultimate-merge
StephanTLavavej Feb 2, 2026
3d6a42b
Merge pull request #6065 from StephanTLavavej/the-penultimate-merge
StephanTLavavej Feb 2, 2026
a89f3a7
`<flat_map>`, `<flat_set>`: Mega overhaul! (#6068)
StephanTLavavej Feb 3, 2026
9cb3a5c
`<flat_map>`, `<flat_set>`: Final fixes (#6070)
StephanTLavavej Feb 4, 2026
c4f7dea
`_Is_sorted_and_unique` => `_Is_sorted_maybe_unique`
StephanTLavavej Feb 9, 2026
d587c3b
`_Msg_not_sorted` => `_Msg_not_sorted_maybe_unique`
StephanTLavavej Feb 9, 2026
89f3b57
`_Msg_replace_not_sorted` => `_Msg_replace_not_sorted_maybe_unique`
StephanTLavavej Feb 9, 2026
f71e08f
Manual wrapping for clang-format is no longer necessary.
StephanTLavavej Feb 9, 2026
0d27c5f
Drop `forward` when calling `_Compare_keys`.
StephanTLavavej Feb 9, 2026
95cb999
benchmark: Extract `initializer_list` construction.
StephanTLavavej Feb 9, 2026
1945ad0
flat_map: const overloads of begin()/end() can call values.cbegin()/c…
StephanTLavavej Feb 9, 2026
d6b947f
Use `_Not_allocator_for_container` in existing code.
StephanTLavavej Feb 9, 2026
de5086a
Add a comment explaining SCARY iterators with citations.
StephanTLavavej Feb 9, 2026
c7dfdb7
Add compiler bug workarounds.
StephanTLavavej Feb 10, 2026
de130b9
Merge branch 'main' into flat_meow
StephanTLavavej Feb 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ add_benchmark(filesystem src/filesystem.cpp)
add_benchmark(fill src/fill.cpp)
add_benchmark(find_and_count src/find_and_count.cpp)
add_benchmark(find_first_of src/find_first_of.cpp)
add_benchmark(flat_meow_assign src/flat_meow_assign.cpp)
add_benchmark(has_single_bit src/has_single_bit.cpp)
add_benchmark(includes src/includes.cpp)
add_benchmark(integer_to_string src/integer_to_string.cpp)
Expand Down
52 changes: 52 additions & 0 deletions benchmarks/src/flat_meow_assign.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#include <benchmark/benchmark.h>
#include <flat_map>
#include <flat_set>
#include <string>

using namespace std;

void flat_map_strings(benchmark::State& state) {
flat_map<string, int> pieces;
for (auto _ : state) {
pieces = {{"soldier"s, 1}, {"soldier"s, 2}, {"soldier"s, 3}, {"soldier"s, 4}, {"soldier"s, 5}, {"soldier"s, 6},
{"soldier"s, 7}, {"soldier"s, 8}, {"tower"s, 9}, {"horse"s, 10}, {"elephant"s, 11}, {"vizier"s, 12},
{"king"s, 13}, {"elephant"s, 14}, {"horse"s, 15}, {"tower"s, 16}};
benchmark::DoNotOptimize(pieces);
}
}

void flat_set_strings(benchmark::State& state) {
flat_set<string> pieces;
for (auto _ : state) {
pieces = {"soldier"s, "soldier"s, "soldier"s, "soldier"s, "soldier"s, "soldier"s, "soldier"s, "soldier"s,
"tower"s, "horse"s, "elephant"s, "vizier"s, "king"s, "elephant"s, "horse"s, "tower"s};
benchmark::DoNotOptimize(pieces);
}
}

void flat_map_integers(benchmark::State& state) {
flat_map<int, int> pieces;
for (auto _ : state) {
pieces = {{'s', 1}, {'s', 2}, {'s', 3}, {'s', 4}, {'s', 5}, {'s', 6}, {'s', 7}, {'s', 8}, {'T', 9}, {'H', 10},
{'E', 11}, {'V', 12}, {'K', 13}, {'E', 14}, {'H', 15}, {'T', 16}};
benchmark::DoNotOptimize(pieces);
}
}

void flat_set_integers(benchmark::State& state) {
flat_set<int> pieces;
for (auto _ : state) {
pieces = {'s', 's', 's', 's', 's', 's', 's', 's', 'T', 'H', 'E', 'V', 'K', 'E', 'H', 'T'};
benchmark::DoNotOptimize(pieces);
}
}

BENCHMARK(flat_map_strings);
BENCHMARK(flat_set_strings);
BENCHMARK(flat_map_integers);
BENCHMARK(flat_set_integers);

BENCHMARK_MAIN();
2 changes: 2 additions & 0 deletions stl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ set(HEADERS
${CMAKE_CURRENT_LIST_DIR}/inc/experimental/generator
${CMAKE_CURRENT_LIST_DIR}/inc/experimental/resumable
${CMAKE_CURRENT_LIST_DIR}/inc/filesystem
${CMAKE_CURRENT_LIST_DIR}/inc/flat_map
${CMAKE_CURRENT_LIST_DIR}/inc/flat_set
${CMAKE_CURRENT_LIST_DIR}/inc/format
${CMAKE_CURRENT_LIST_DIR}/inc/forward_list
${CMAKE_CURRENT_LIST_DIR}/inc/fstream
Expand Down
61 changes: 58 additions & 3 deletions stl/debugger/STL.natvis
Original file line number Diff line number Diff line change
Expand Up @@ -1035,13 +1035,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</Expand>
</Type>

<!-- VC 2015 -->
<Type Name="std::deque&lt;*&gt;">
<DisplayString>{{ size={_Mypair._Myval2._Mysize} }}</DisplayString>
<Intrinsic Name="size" Expression="_Mypair._Myval2._Mysize" />
<DisplayString>{{ size={size()} }}</DisplayString>
<Expand>
<Item Name="[allocator]" ExcludeView="simple">_Mypair</Item>
<IndexListItems>
<Size>_Mypair._Myval2._Mysize</Size>
<Size>size()</Size>
<ValueNode>_Mypair._Myval2._Map[(($i + _Mypair._Myval2._Myoff) / _EEN_DS) % _Mypair._Myval2._Mapsize][($i + _Mypair._Myval2._Myoff) % _EEN_DS]</ValueNode>
</IndexListItems>
</Expand>
Expand Down Expand Up @@ -2256,4 +2256,59 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
</Expand>
</Type>

<Type Name="std::flat_map&lt;*&gt;">
<AlternativeType Name="std::flat_multimap&lt;*&gt;"/>
<Intrinsic Name="size" Expression="_Data.keys.size()"/>
<Intrinsic Name="key_at" Expression="&amp;_Data.keys[index]">
<Parameter Name="index" Type="size_t" />
</Intrinsic>
<Intrinsic Name="value_at" Expression="&amp;_Data.values[index]">
<Parameter Name="index" Type="size_t" />
</Intrinsic>

<DisplayString>{{ size={size()} }}</DisplayString>

<Expand>
<Item Name="[size]">size()</Item>
<Item Name="[comparator]" ExcludeView="simple">_Key_compare</Item>
<CustomListItems>
<Variable Name="i" InitialValue="0" />
<Size>size()</Size>
<Loop>
<Item Name="[{*key_at(i)}]">*value_at(i)</Item>
<Exec>++i</Exec>
</Loop>
</CustomListItems>
</Expand>
</Type>

<!-- fallback when the primary visualization (above) fails to parse, e.g. some custom containers -->
<Type Name="std::flat_map&lt;*&gt;" Priority="MediumLow">
<AlternativeType Name="std::flat_multimap&lt;*&gt;"/>
<Intrinsic Name="size" Expression="_Data.keys.size()"/>
<DisplayString>{{ size={size()} }}</DisplayString>
<Expand>
<Item Name="[comparator]" ExcludeView="simple">_Key_compare</Item>
<Item Name="[keys]">_Data.keys</Item>
<Item Name="[values]">_Data.values</Item>
</Expand>
</Type>

<Type Name="std::_Pairing_iterator_provider&lt;*&gt;::_Iterator">
<DisplayString>({_Key_it}, {_Mapped_it})</DisplayString>
<Expand>
<Item Name="[key]">_Key_it</Item>
<Item Name="[value]">_Mapped_it</Item>
</Expand>
</Type>

<Type Name="std::flat_set&lt;*&gt;">
<AlternativeType Name="std::flat_multiset&lt;*&gt;"/>
<DisplayString>{_Data}</DisplayString>
<Expand>
<Item Name="[comparator]" ExcludeView="simple">_Key_compare</Item>
<ExpandedItem>_Data</ExpandedItem>
</Expand>
</Type>

</AutoVisualizer>
2 changes: 2 additions & 0 deletions stl/inc/__msvc_all_public_headers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@
#include <exception>
#include <expected>
#include <filesystem>
#include <flat_map>
#include <flat_set>
#include <format>
#include <forward_list>
#include <fstream>
Expand Down
6 changes: 6 additions & 0 deletions stl/inc/__msvc_string_view.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2148,6 +2148,12 @@ inline namespace literals {
} // namespace string_view_literals
} // namespace literals
#endif // _HAS_CXX17

#if _HAS_CXX23
template <class _Elem, class _Traits>
constexpr bool _Equivalence_is_equality_impl<basic_string_view<_Elem, _Traits>> =
_Is_implementation_handled_char_traits<_Traits>;
#endif // _HAS_CXX23
_STD_END

#pragma pop_macro("new")
Expand Down
5 changes: 2 additions & 3 deletions stl/inc/algorithm
Original file line number Diff line number Diff line change
Expand Up @@ -8564,14 +8564,13 @@ void inplace_merge(_BidIt _First, _BidIt _Mid, _BidIt _Last, _Pr _Pred) {

++_ULast;

using _Diff = _Iter_diff_t<_BidIt>;
const _Diff _Count1 = _STD distance(_UFirst, _UMid);
const auto _Count1 = _STD distance(_UFirst, _UMid);
if (_Count1 == 1) { // rotate only element remaining in left partition to the end, without allocating
_STD _Rotate_one_left(_UFirst, _UMid, _ULast);
return;
}

const _Diff _Count2 = _STD distance(_UMid, _ULast);
const auto _Count2 = _STD distance(_UMid, _ULast);
_Optimistic_temporary_buffer2<_Iter_value_t<_BidIt>> _Temp_buf{(_STD min) (_Count1, _Count2)};
_STD _Buffered_inplace_merge_unchecked_impl(
_UFirst, _UMid, _ULast, _Count1, _Count2, _Temp_buf._Data, _Temp_buf._Capacity, _STD _Pass_fn(_Pred));
Expand Down
8 changes: 8 additions & 0 deletions stl/inc/deque
Original file line number Diff line number Diff line change
Expand Up @@ -1848,6 +1848,14 @@ namespace pmr {
using deque = _STD deque<_Ty, polymorphic_allocator<_Ty>>;
} // namespace pmr
#endif // _HAS_CXX17

#if _HAS_CXX23
template <class _Ty, class _Alloc>
constexpr bool _Has_guaranteed_push_back<deque<_Ty, _Alloc>> = true;

template <class _Ty, class _Alloc>
constexpr bool _Has_guaranteed_append_range<deque<_Ty, _Alloc>> = true;
#endif // _HAS_CXX23
_STD_END

#pragma pop_macro("new")
Expand Down
Loading