Pushed to trunk. On Fri, Sep 5, 2025 at 3:03 PM Tomasz Kaminski <tkami...@redhat.com> wrote:
> > > On Fri, Sep 5, 2025 at 2:25 PM Jonathan Wakely <jwak...@redhat.com> wrote: > >> On Fri, 5 Sept 2025 at 08:14, Tomasz Kamiński <tkami...@redhat.com> >> wrote: >> > >> > From: Luc Grosheintz <luc.groshei...@gmail.com> >> > >> > This is a partial implementation of P2781R9. It adds std::cw and >> > std::constant_wrapper, but doesn't modify __integral_constant_like for >> > span/mdspan. >> > >> > libstdc++-v3/ChangeLog: >> > >> > * include/bits/version.def (constant_wrapper): Add. >> > * include/bits/version.h: Regenerate. >> > * include/std/type_traits (_CwFixedValue): New class. >> > (_IndexSequence): New struct. >> > (_BuildIndexSequence): New struct. >> > (_ConstExprParam): New concept. >> > (_CwOperators): New struct. >> > (constant_wrapper): New struct. >> > (cw): New global constant. >> > * src/c++23/std.cc.in (constant_wrapper): Add. >> > (cw): Add. >> > * testsuite/20_util/constant_wrapper/adl.cc: New test. >> > * testsuite/20_util/constant_wrapper/ex.cc: New test. >> > * testsuite/20_util/constant_wrapper/generic.cc: New test. >> > * testsuite/20_util/constant_wrapper/instantiate.cc: New test. >> > * testsuite/20_util/constant_wrapper/op_comma_neg.cc: New test. >> > * testsuite/20_util/constant_wrapper/version.cc: New test. >> > >> > Co-authored-by: Tomasz Kamiński <tkami...@redhat.com> >> > Signed-off-by: Luc Grosheintz <luc.groshei...@gmail.com> >> > Signed-off-by: Tomasz Kamiński <tkami...@redhat.com> >> > --- >> > v5 adds data member pointer tests >> >> This adds a lot of new code to <type_traits> which needs to be >> preprocessed even by C++11/14/17/20/23 programs, so we might want to >> put it in a separate header that is included from <type_traits> >> conditionally: >> #ifdef __cpp_lib_constant_wrapper >> #include <bits/constant_wrapper.h> >> #endif >> but we can do that later, as splitting up <type_traits> is already >> planned (maybe we should look into that for GCC 16 during stage 3, >> when we're stabilising things). >> > I have raised this during review of the patch > https://gcc.gnu.org/pipermail/libstdc++/2025-September/063202.html. > Luc pointed out that would need to also move _Build_index_type somewhere > where it can be included from > the new file, or just assume it is declared before including > `bits/constant_wrapper` (i.e. included in the middle > of the file). This convinced me that this is something we should take into > consideration when splitting > type_traits. > > >> >> OK for trunk, thank you both for working on this. >> >>