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?

- Daniel

>
>

Reply via email to