The changes since v2 are in the test code: - There's a short test for string literals. I had trouble doing much with them.
- Convert commented out invalid code into neg test using static_asserts for: invocable, indexable. - Check type of expression in tests for: operator{->*,||,&&,<=>,==,!=} - Check mixed wrapped and unwrapped for: operator{||,&&,==,!=,<=>}. - For || and && check that while the result is not std::cw<bool(...)>, it's still a core constant. - Add tests checking compatibility with other constant wrappers. - Add `check_same(lhs, rhs)` which checks that the two compare equal and have the same type; and clean up the code by using it. - The example from the standard was converted to a compile only test (with check for failure). - Add tests for CTAD of span/mdspan from boolean constants. - Removed adl.cc because instantiate.cc is a better test of the ADL behaviour. Luc Grosheintz (2): libstdc++: Implement constant_wrapper, cw from P2781R9. libstdc++: Adjust span/mdspan CTAD for P2781R9. libstdc++-v3/include/bits/version.def | 8 + libstdc++-v3/include/bits/version.h | 10 + libstdc++-v3/include/std/span | 3 +- libstdc++-v3/include/std/type_traits | 371 +++++++++++ libstdc++-v3/src/c++23/std.cc.in | 4 + .../testsuite/20_util/constant_wrapper/adl.cc | 86 +++ .../testsuite/20_util/constant_wrapper/ex.cc | 39 ++ .../20_util/constant_wrapper/generic.cc | 386 ++++++++++++ .../20_util/constant_wrapper/instantiate.cc | 575 ++++++++++++++++++ .../20_util/constant_wrapper/op_comma_neg.cc | 14 + .../constant_wrapper/other_wrappers.cc | 75 +++ .../20_util/constant_wrapper/version.cc | 11 + .../23_containers/mdspan/extents/misc.cc | 22 +- .../testsuite/23_containers/mdspan/mdspan.cc | 23 +- .../testsuite/23_containers/span/deduction.cc | 20 +- 15 files changed, 1632 insertions(+), 15 deletions(-) create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc create mode 100644 libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc -- 2.51.0