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 [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 64035398B842 for ; Wed, 18 Aug 2021 14:41:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 64035398B842 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-591-c9-QdchZMEyzFA29lI4gfg-1; Wed, 18 Aug 2021 10:41:38 -0400 X-MC-Unique: c9-QdchZMEyzFA29lI4gfg-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 43CA7190A7A0; Wed, 18 Aug 2021 14:41:37 +0000 (UTC) Received: from localhost (unknown [10.33.36.8]) by smtp.corp.redhat.com (Postfix) with ESMTP id E2C7310013D6; Wed, 18 Aug 2021 14:41:36 +0000 (UTC) Date: Wed, 18 Aug 2021 15:41:35 +0100 From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [committed] libstdc++: Simplify n-ary arithmetic promotion traits Message-ID: MIME-Version: 1.0 X-Clacks-Overhead: GNU Terry Pratchett X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="eWKMeRBxzfj2y4hl" Content-Disposition: inline X-Spam-Status: No, score=-15.1 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_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Aug 2021 14:41:41 -0000 --eWKMeRBxzfj2y4hl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline The std::complex partial specializations have been unnecessary since 774c3d8647cc7012937cfc9d2d6dacc85b6cf8e9 Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: * include/ext/type_traits.h (__promote_2, __promote_3) (__promote_4): Redfine as alias templates using __promoted_t. * include/std/complex (__promote_2): Remove partial specializations for std::complex. Tested powerpc64le-linux. Committed to trunk. --eWKMeRBxzfj2y4hl Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="patch.txt" commit 37620d575111caf3b24d4b9039808334e619c13a Author: Jonathan Wakely Date: Tue Aug 17 20:26:52 2021 libstdc++: Simplify n-ary arithmetic promotion traits The std::complex partial specializations have been unnecessary since 774c3d8647cc7012937cfc9d2d6dacc85b6cf8e9 Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: * include/ext/type_traits.h (__promote_2, __promote_3) (__promote_4): Redfine as alias templates using __promoted_t. * include/std/complex (__promote_2): Remove partial specializations for std::complex. diff --git a/libstdc++-v3/include/ext/type_traits.h b/libstdc++-v3/include/ext/type_traits.h index 065edb4e9a5..fed78d3a527 100644 --- a/libstdc++-v3/include/ext/type_traits.h +++ b/libstdc++-v3/include/ext/type_traits.h @@ -189,9 +189,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { typedef float __type; }; #if __cpp_fold_expressions + template using __promoted_t = decltype((typename __promote<_Tp>::__type(0) + ...)); -#endif + + // Deducing the promoted type is done by __promoted_t<_Tp...>, + // then __promote is used to provide the nested __type member. + template + using __promote_2 = __promote<__promoted_t<_Tp, _Up>>; + + template + using __promote_3 = __promote<__promoted_t<_Tp, _Up, _Vp>>; + + template + using __promote_4 = __promote<__promoted_t<_Tp, _Up, _Vp, _Wp>>; + +#else template::__type, @@ -219,6 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; }; +#endif _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index c2f6421e0b7..a5b4406dd68 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -1557,35 +1557,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // See ext/type_traits.h for the primary template. - template - struct __promote_2, _Up> - { - public: - typedef std::complex::__type> __type; - }; - - template - struct __promote_2<_Tp, std::complex<_Up> > - { - public: - typedef std::complex::__type> __type; - }; - - template - struct __promote_2, std::complex<_Up> > - { - public: - typedef std::complex::__type> __type; - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - #if __cplusplus >= 201103L namespace std _GLIBCXX_VISIBILITY(default) --eWKMeRBxzfj2y4hl--