diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2024-07-25 13:52:12 +0100 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2024-07-28 19:05:58 +0200 |
commit | 436ef665d89e3fc5cc6562dc52e8178cb1034846 (patch) | |
tree | 99ecaea1d52e2f95176c271a74aebcdbbbc1d292 | |
parent | 69270c7452ce570a28e57840a350021c2b85fdd3 (diff) | |
download | gcc-436ef665d89e3fc5cc6562dc52e8178cb1034846.zip gcc-436ef665d89e3fc5cc6562dc52e8178cb1034846.tar.gz gcc-436ef665d89e3fc5cc6562dc52e8178cb1034846.tar.bz2 |
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.
-rw-r--r-- | libstdc++-v3/include/std/format | 2 | ||||
-rw-r--r-- | 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 16cee0d..8f6a82a 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 eba129f..16ca71c 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) { |