On Thu, 22 May 2025 at 13:23, Daniel Krügler <daniel.krueg...@gmail.com> wrote:
>
> Am Do., 22. Mai 2025 um 11:48 Uhr schrieb Tomasz Kamiński 
> <tkami...@redhat.com>:
>>
>> From: Jonathan Wakely <jwak...@redhat.com>
>>
>> This papers implements C++27 std::indirect as specified
>> in P3019 with ammendment to move assgiment from LWG 4251.
>>
>>         PR libstdc++/119152
>>
>> libstdc++-v3/ChangeLog:
>>
>>         * include/Makefile.am: Add new header.
>>         * include/Makefile.in: Regenerate.
>>         * include/bits/indirect.h: New file.
>>         * include/bits/version.def (indirect): Define.
>>         * include/bits/version.h: Regenerate.
>>         * include/std/memory: Include new header.
>>         * testsuite/std/memory/indirect/copy.cc
>>         * testsuite/std/memory/indirect/copy_alloc.cc
>>         * testsuite/std/memory/indirect/ctor.cc
>>         * testsuite/std/memory/indirect/incomplete.cc
>>         * testsuite/std/memory/indirect/invalid_neg.cc
>>         * testsuite/std/memory/indirect/move.cc
>>         * testsuite/std/memory/indirect/move_alloc.cc
>>         * testsuite/std/memory/indirect/relops.cc
>>
>> Co-Authored-By: Tomasz Kamiński <tkami...@redhat.com>
>> Signed-off-by: Tomasz Kamiński <tkami...@redhat.com>
>> ---
>> Tested on x86_64-linux. OK for trunk?
>>
>>  libstdc++-v3/include/Makefile.am              |   1 +
>>  libstdc++-v3/include/Makefile.in              |   1 +
>>  libstdc++-v3/include/bits/indirect.h          | 459 ++++++++++++++++++
>>  libstdc++-v3/include/bits/version.def         |   9 +
>>  libstdc++-v3/include/bits/version.h           |  10 +
>>  libstdc++-v3/include/std/memory               |   5 +
>>  .../testsuite/std/memory/indirect/copy.cc     | 121 +++++
>>  .../std/memory/indirect/copy_alloc.cc         | 228 +++++++++
>>  .../testsuite/std/memory/indirect/ctor.cc     | 203 ++++++++
>>  .../std/memory/indirect/incomplete.cc         |  38 ++
>>  .../std/memory/indirect/invalid_neg.cc        |  28 ++
>>  .../testsuite/std/memory/indirect/move.cc     | 144 ++++++
>>  .../std/memory/indirect/move_alloc.cc         | 296 +++++++++++
>>  .../testsuite/std/memory/indirect/relops.cc   |  82 ++++
>>  14 files changed, 1625 insertions(+)
>>  create mode 100644 libstdc++-v3/include/bits/indirect.h
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/copy.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/copy_alloc.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/ctor.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/incomplete.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/invalid_neg.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/move.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/move_alloc.cc
>>  create mode 100644 libstdc++-v3/testsuite/std/memory/indirect/relops.cc
>>
>> diff --git a/libstdc++-v3/include/Makefile.am 
>> b/libstdc++-v3/include/Makefile.am
>> index 3e5b6c4142e..b67d470c27e 100644
>> --- a/libstdc++-v3/include/Makefile.am
>> +++ b/libstdc++-v3/include/Makefile.am
>> @@ -210,6 +210,7 @@ bits_headers = \
>>         ${bits_srcdir}/gslice_array.h \
>>         ${bits_srcdir}/hashtable.h \
>>         ${bits_srcdir}/hashtable_policy.h \
>> +       ${bits_srcdir}/indirect.h \
>>         ${bits_srcdir}/indirect_array.h \
>>         ${bits_srcdir}/ios_base.h \
>>         ${bits_srcdir}/istream.tcc \
>> diff --git a/libstdc++-v3/include/Makefile.in 
>> b/libstdc++-v3/include/Makefile.in
>> index 3531162b5f7..6f7f2be68fd 100644
>> --- a/libstdc++-v3/include/Makefile.in
>> +++ b/libstdc++-v3/include/Makefile.in
>> @@ -563,6 +563,7 @@ bits_freestanding = \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/gslice_array.h \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/hashtable.h \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/hashtable_policy.h \
>> +@GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/indirect.h \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/indirect_array.h \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/ios_base.h \
>>  @GLIBCXX_HOSTED_TRUE@  ${bits_srcdir}/istream.tcc \
>> diff --git a/libstdc++-v3/include/bits/indirect.h 
>> b/libstdc++-v3/include/bits/indirect.h
>> new file mode 100644
>> index 00000000000..32b2af9117d
>> --- /dev/null
>> +++ b/libstdc++-v3/include/bits/indirect.h
>> @@ -0,0 +1,459 @@
>> +// Vocabulary Types for Composite Class Design -*- C++ -*-
>> +
>> +// Copyright The GNU Toolchain Authors.
>> +//
>> +// This file is part of the GNU ISO C++ Library.  This library is free
>> +// software; you can redistribute it and/or modify it under the
>> +// terms of the GNU General Public License as published by the
>> +// Free Software Foundation; either version 3, or (at your option)
>> +// any later version.
>> +
>> +// This library is distributed in the hope that it will be useful,
>> +// but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +// GNU General Public License for more details.
>> +
>> +// Under Section 7 of GPL version 3, you are granted additional
>> +// permissions described in the GCC Runtime Library Exception, version
>> +// 3.1, as published by the Free Software Foundation.
>> +
>> +// You should have received a copy of the GNU General Public License and
>> +// a copy of the GCC Runtime Library Exception along with this program;
>> +// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
>> +// <http://www.gnu.org/licenses/>.
>> +
>> +/** @file include/bits/indirect.h
>> + *  This is an internal header file, included by other library headers.
>> + *  Do not attempt to use it directly. @headername{memory}  XXX right 
>> header?
>
>
> Is the trailing "XXX right header?" a spurious comment that should be 
> actually removed?

Ah yes! That was a reminder to myself to check if <memory> is really
where these classes are meant to be defined, and I forgot to remove
it.

Reply via email to