[gcc r14-10537] libstdc++: Remove std::basic_format_args default constructor (LWG 4106)
Jonathan Wakely
redi@gcc.gnu.org
Thu Aug 1 17:55:22 GMT 2024
https://gcc.gnu.org/g:a78480c4e92f6aa2e4b736fd393037df2267b7f8
commit r14-10537-ga78480c4e92f6aa2e4b736fd393037df2267b7f8
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jul 25 13:52:12 2024 +0100
libstdc++: Remove std::basic_format_args default constructor (LWG 4106)
There's no valid use case for default constructing this type, so the
committee approved removing the default constructor.
libstdc++-v3/ChangeLog:
* include/std/format (basic_format_args): Remove default
constructor, as per LWG 4106.
* testsuite/std/format/arguments/args.cc: Check it isn't default
constructible.
(cherry picked from commit 5be55447e256302324f38f04316a437909ae5847)
Diff:
---
libstdc++-v3/include/std/format | 2 --
libstdc++-v3/testsuite/std/format/arguments/args.cc | 4 ++++
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 16cee0d3c74d..8f6a82a1fd41 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -3667,8 +3667,6 @@ namespace __format
{ return {_Format_arg::template _S_to_enum<_Args>()...}; }
public:
- basic_format_args() noexcept = default;
-
template<typename... _Args>
basic_format_args(const _Store<_Args...>& __store) noexcept;
diff --git a/libstdc++-v3/testsuite/std/format/arguments/args.cc b/libstdc++-v3/testsuite/std/format/arguments/args.cc
index eba129ff8944..16ca71caecbe 100644
--- a/libstdc++-v3/testsuite/std/format/arguments/args.cc
+++ b/libstdc++-v3/testsuite/std/format/arguments/args.cc
@@ -3,6 +3,10 @@
#include <format>
#include <testsuite_hooks.h>
+// LWG 4106. basic_format_args should not be default-constructible
+static_assert( ! std::is_default_constructible_v<std::format_args> );
+static_assert( ! std::is_default_constructible_v<std::wformat_args> );
+
template<typename Ctx, typename T>
bool equals(std::basic_format_arg<Ctx> fmt_arg, T expected) {
return std::visit_format_arg([=](auto arg_val) {
More information about the Libstdc++-cvs
mailing list