Skip to content

Conversation

@frederick-vs-ja
Copy link
Contributor

@frederick-vs-ja frederick-vs-ja commented Nov 19, 2025

Towards #2910 and #2912.

Implements Part

  • 5 swap Should be Conditionally noexcept
  • 6 Missing insert_range(sorted_unique, rg), and
  • 10 Feature Test Macros

from WG21-P3567R2. Other parts are probably already implemented.

Drive-by changes:

  • Move SCARY test into another file; maybe we expand the test when adding [[msvc::no_unique_address]] to flat_meow in the feature.
  • Fix the condition for using 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)

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"
Copy link
Contributor Author

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.

@StephanTLavavej StephanTLavavej self-assigned this Nov 19, 2025
@StephanTLavavej StephanTLavavej added cxx23 C++23 feature flat_meow C++23 container adaptors labels Nov 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cxx23 C++23 feature flat_meow C++23 container adaptors

Projects

Status: Initial Review

Development

Successfully merging this pull request may close these issues.

2 participants