From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id EC3E2384783D for ; Wed, 22 Mar 2023 17:50:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EC3E2384783D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679507430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yYWhpwUSYQpNWb3U2N2UTlQmlMPRLQnbgwL6aw1pqDI=; b=U9cibDF1rtpjdJdh9rZ4mzQCZT9ykpfiE4Wcj98uuYvE7CCSZ7EnVTYxfTGF35/pOnRRMu TyjDCyqIbE8VYQ8phpm/NhaA/9W1kzbF69vie5n+ElXClmicLX7zj/oZ7gAxYPMhPjj0Wf m3z5Yx5UbsJBbvEDeuGKAMCjT3MHh/0= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-209-49Ir7vrfPwyvgumL97yg4w-1; Wed, 22 Mar 2023 13:50:27 -0400 X-MC-Unique: 49Ir7vrfPwyvgumL97yg4w-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D6FB7101A531; Wed, 22 Mar 2023 17:50:26 +0000 (UTC) Received: from localhost (unknown [10.33.36.149]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9F0642027040; Wed, 22 Mar 2023 17:50:26 +0000 (UTC) From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [committed] libstdc++: Remove std::formatter specialization Date: Wed, 22 Mar 2023 17:50:26 +0000 Message-Id: <20230322175026.408061-1-jwakely@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Tested powerpc64le-linux, pushed to trunk. -- >8-- This was approved in Issaquah as LWG 3833. libstdc++-v3/ChangeLog: * include/std/format (formatter): Do not define partial speclialization, as per LWG 3833. * testsuite/std/format/formatter/requirements.cc: Check it. --- libstdc++-v3/include/std/format | 22 ------------------- .../std/format/formatter/requirements.cc | 9 ++++++++ 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format index 0e40bce5c15..72b6b450ad1 100644 --- a/libstdc++-v3/include/std/format +++ b/libstdc++-v3/include/std/format @@ -1882,28 +1882,6 @@ namespace __format __format::__formatter_str<_CharT> _M_f; }; - template<__format::__char _CharT, size_t _Nm> - struct formatter - { - formatter() = default; - - [[__gnu__::__always_inline__]] - constexpr typename basic_format_parse_context<_CharT>::iterator - parse(basic_format_parse_context<_CharT>& __pc) - { return _M_f.parse(__pc); } - - template - typename basic_format_context<_Out, _CharT>::iterator - format(const _CharT (&__u)[_Nm], - basic_format_context<_Out, _CharT>& __fc) const - { return _M_f.format({__u, _Nm}, __fc); } - - constexpr void set_debug_format() noexcept { _M_f.set_debug_format(); } - - private: - __format::__formatter_str<_CharT> _M_f; - }; - template struct formatter, char> { diff --git a/libstdc++-v3/testsuite/std/format/formatter/requirements.cc b/libstdc++-v3/testsuite/std/format/formatter/requirements.cc index 3bff8bdbd5d..7d95f7fafe9 100644 --- a/libstdc++-v3/testsuite/std/format/formatter/requirements.cc +++ b/libstdc++-v3/testsuite/std/format/formatter/requirements.cc @@ -51,6 +51,15 @@ test_specializations() // [format.formatter.spec] static_assert( ! std::is_move_constructible_v ); static_assert( ! std::is_copy_assignable_v ); static_assert( ! std::is_move_assignable_v ); + + // LWG 3833. Remove specialization + // template struct formatter + using Farr = std::format_context::formatter_type; + static_assert( ! std::is_default_constructible_v ); + static_assert( ! std::is_copy_constructible_v ); + static_assert( ! std::is_move_constructible_v ); + static_assert( ! std::is_copy_assignable_v ); + static_assert( ! std::is_move_assignable_v ); } int main() -- 2.39.2