libstdc++ patch ping

Tomasz Kaminski tkaminsk@redhat.com
Mon Aug 25 15:11:32 GMT 2025


On Mon, Aug 25, 2025 at 12:02 PM Jakub Jelinek <jakub@redhat.com> wrote:

> Hi!
>
> I'd like to ping the
>
> libstdc++, v2: library side of C++26 P2786R13 - Trivial Relocatability
> [PR119064]
> https://gcc.gnu.org/pipermail/libstdc++/2025-July/062605.html

// I lost the e-mial, so I now sure how to respond to it. Are there any
instruction how to do so?

With Jason changes, I was able constexpr relocate arrays, using following
example code:
template<typename T>
union trivial_union
{
  constexpr trivial_union() {}
  constexpr ~trivial_union() {}

  T mem;
};


template<typename X>
constexpr bool
test_constexpr_relocate_array()
{
  using XA = X[2];
  trivial_union<XA[10]> a,c;

  XA *sf, *sl, *sr;
  ::new(&a.mem[1][0]) X(11);
  ::new(&a.mem[1][1]) X(12);
  sf = &a.mem[1];
  for (int i = 0; i < 5; ++i)
    {
      ::new(&a.mem[i + 2][0]) X{13 + 2 * i};
      ::new(&a.mem[i + 2][1]) X{14 + 2 * i};
      sl = &a.mem[i+2];
    }
  ++sl;
  ::new(&c.mem[3][0]) X(42);
  ::new(&c.mem[3][1]) X(43);
  sr = &c.mem[3];
  (*sr)[0].~X();
  (*sr)[1].~X();
  VERIFY( std::relocate(sf, sl, sr) == sr + 6 );
  for (int i = 0; i < 6; ++i)
    {
      VERIFY( (*sr)[0].s == 2 * i + 11 && (*sr)[1].s == 2 * i + 12 );
      (*sr)[0].~S();
      (*sr)[1].~S();
      ++sr;
    }
  return true;
}
 static_assert(test_constexpr_relocate_array<S>());

However, relocate for array should not be usable at compile time, because
it is specified to use start_lifetime_as,
that is not marked as constexpr. This needs to be adjusted, for example by
calling non-constexpr function from std::relocate.

Could you also adjsut the test file in similar manner as I did before, i.e.
make them templated on the type that will be relocated
(S or T in your example), I use X as placeholder, and then in main invoke
both:
test_constexpr_relocate_array<S>();
test_constexpr_relocate_array<T>();

Tomasz


>
>
> and
>
> libstdc++, v2: Implement C++26 P3378R2 - constexpr exception types
> [PR121114]
> https://gcc.gnu.org/pipermail/libstdc++/2025-August/062947.html
>
> patches (for the latter as I wrote in the mail another possibility would be
> add more smaller headers, I can work on that if that is preferred but would
> like guidance on naming those).
>
> Thanks
>
>         Jakub
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20250825/b6efcd32/attachment.htm>


More information about the Libstdc++ mailing list