Implement LWG-4106 `basic_format_args` should not be default-constructible (#4757)

Co-authored-by: Stephan T. Lavavej <stl@nuwen.net>
This commit is contained in:
A. Jiang 2024-07-05 15:36:52 +08:00 коммит произвёл GitHub
Родитель 679783a694
Коммит 53f1fafbc2
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
3 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -2079,8 +2079,6 @@ class _Format_arg_store<_Context> {};
_EXPORT_STD template <class _Context>
class basic_format_args {
public:
basic_format_args() noexcept = default;
basic_format_args(const _Format_arg_store<_Context>&) noexcept {}
template <class... _Args>

Просмотреть файл

@ -171,6 +171,10 @@ std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer.value/ctor.ite
# libc++ doesn't implement LWG-4061
std/utilities/format/format.functions/bug_81590.compile.pass.cpp FAIL
# libc++ doesn't implement LWG-4106
std/utilities/format/format.arguments/format.args/ctor.pass.cpp FAIL
std/utilities/format/format.arguments/format.args/get.pass.cpp FAIL
# If any feature-test macro test is failing, this consolidated test will also fail.
std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp FAIL

Просмотреть файл

@ -280,6 +280,9 @@ void test_basic_format_context_construction() {
static_assert(!is_constructible_with_trailing_empty_brace_impl<context>);
static_assert(!is_constructible_with_trailing_empty_brace_impl<context, OutIt, basic_format_args<context>>);
static_assert(!is_constructible_with_trailing_empty_brace_impl<context, OutIt, const basic_format_args<context>&>);
// Also test LWG-4106 "basic_format_args should not be default-constructible"
static_assert(!is_default_constructible_v<basic_format_args<context>>);
}
// Test GH-4636 "<format>: Call to next_arg_id may result in unexpected error (regression)"