public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-9642] libstdc++: Use std::type_identity_t in <string_view> as per LWG 3950 [PR114400]
@ 2024-03-23 11:09 Jonathan Wakely
  0 siblings, 0 replies; only message in thread
From: Jonathan Wakely @ 2024-03-23 11:09 UTC (permalink / raw)
  To: gcc-cvs, libstdc++-cvs

https://gcc.gnu.org/g:f4605c53ea2eeafc13e14dd1ad00a0caf80057e2

commit r14-9642-gf4605c53ea2eeafc13e14dd1ad00a0caf80057e2
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Mar 20 11:07:56 2024 +0000

    libstdc++: Use std::type_identity_t in <string_view> as per LWG 3950 [PR114400]
    
    The difference between __type_identity_t and std::type_identity_t is
    observable, as demonstrated in the PR. Nobody in LWG seems to think this
    an example we should really care about, but it seems easy and harmless
    to change this.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/114400
            * include/std/string_view (operator==): Use std::type_identity_t
            in C++20 instead of our own __type_identity_t.

Diff:
---
 libstdc++-v3/include/std/string_view | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index e30a9c1768e..a7c5a126461 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -602,15 +602,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // deduction and the other argument gets implicitly converted to the deduced
   // type (see N3766).
 
+#if __cpp_lib_three_way_comparison
   template<typename _CharT, typename _Traits>
     [[nodiscard]]
     constexpr bool
     operator==(basic_string_view<_CharT, _Traits> __x,
-               __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
+	       type_identity_t<basic_string_view<_CharT, _Traits>> __y)
     noexcept
     { return __x.size() == __y.size() && __x.compare(__y) == 0; }
 
-#if __cpp_lib_three_way_comparison
   template<typename _CharT, typename _Traits>
     [[nodiscard]]
     constexpr auto
@@ -620,6 +620,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     -> decltype(__detail::__char_traits_cmp_cat<_Traits>(0))
     { return __detail::__char_traits_cmp_cat<_Traits>(__x.compare(__y)); }
 #else
+  template<typename _CharT, typename _Traits>
+    [[nodiscard]]
+    constexpr bool
+    operator==(basic_string_view<_CharT, _Traits> __x,
+	       __type_identity_t<basic_string_view<_CharT, _Traits>> __y)
+    noexcept
+    { return __x.size() == __y.size() && __x.compare(__y) == 0; }
+
   template<typename _CharT, typename _Traits>
     [[nodiscard]]
     constexpr bool

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-03-23 11:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-23 11:09 [gcc r14-9642] libstdc++: Use std::type_identity_t in <string_view> as per LWG 3950 [PR114400] Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).