-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Implement P3567R2 flat_meow Fixes
#5882
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/flat_map
Are you sure you want to change the base?
Implement P3567R2 flat_meow Fixes
#5882
Conversation
With additional condition fixes for `append_range`
fe95990 to
9536d79
Compare
9536d79 to
0593036
Compare
| std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.pass.cpp:0 FAIL | ||
| std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.pass.cpp:1 FAIL | ||
|
|
||
| # MSVC has not implemented P2448R2 "Relaxing some constexpr restrictions" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, failures under "FIXME! C++26 "P3372R3 constexpr Containers And Adaptors" isn't completely guarded with TEST_STD_VER >= 26." were also due to this.
Since C++23 (WG21-P2448R2), it's valid to mark the the test functions constexpr even though they never produce any constant (sub)expression in C++23 mode.
Towards #2910 and #2912.
Implements Part
swapShould be Conditionallynoexceptinsert_range(sorted_unique, rg), andfrom WG21-P3567R2. Other parts are probably already implemented.
Drive-by changes:
[[msvc::no_unique_address]]toflat_meowin the feature.append_range- we may only rely it when it belongs to some standard containers.Blocked libcxx tests:
std/containers/container.adaptors/flat.map/flat.map.modifiers/swap_free.pass.cpp(testing old, overly strong exception specification)std/containers/container.adaptors/flat.map/flat.map.modifiers/swap_member.pass.cpp(same as above)std/containers/container.adaptors/flat.multimap/flat.multimap.modifiers/swap_free.pass.cpp(same as above)std/containers/container.adaptors/flat.multimap/flat.multimap.modifiers/swap_member.pass.cpp(same as above)std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/swap_free.pass.cpp(same as above)std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/swap_member.pass.cpp(same as above)std/containers/container.adaptors/flat.set/flat.set.modifiers/swap_free.pass.cpp(same as above)std/containers/container.adaptors/flat.set/flat.set.modifiers/swap_member.pass.cpp(same as above)std/language.support/support.limits/support.limits.general/flat_map.version.compile.pass.cpp(testing old FTM value)std/language.support/support.limits/support.limits.general/flat_set.version.compile.pass.cpp(same as above)Unblocked libcxx test:
std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/insert_range.pass.cpp(due to the drive-by fix)std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_range.pass.cpp(same as above; but only for Clang, because MSVC hasn't implemented WG21-P2448R2)