[libcxx] r266587 - Add hash specializations for __int128_t. Fixes LWG issue 2119

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Sun Apr 17 19:54:05 PDT 2016


Author: ericwf
Date: Sun Apr 17 21:54:00 2016
New Revision: 266587

URL: http://llvm.org/viewvc/llvm-project?rev=266587&view=rev
Log:
Add hash specializations for __int128_t. Fixes LWG issue 2119

Modified:
    libcxx/trunk/include/functional
    libcxx/trunk/test/std/utilities/function.objects/unord.hash/integral.pass.cpp
    libcxx/trunk/www/cxx1z_status.html

Modified: libcxx/trunk/include/functional
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/functional?rev=266587&r1=266586&r2=266587&view=diff
==============================================================================
--- libcxx/trunk/include/functional (original)
+++ libcxx/trunk/include/functional Sun Apr 17 21:54:00 2016
@@ -2473,6 +2473,22 @@ struct _LIBCPP_TYPE_VIS_ONLY hash<unsign
 {
 };
 
+#ifndef _LIBCPP_HAS_NO_INT128
+
+template <>
+struct _LIBCPP_TYPE_VIS_ONLY hash<__int128_t>
+    : public __scalar_hash<__int128_t>
+{
+};
+
+template <>
+struct _LIBCPP_TYPE_VIS_ONLY hash<__uint128_t>
+    : public __scalar_hash<__uint128_t>
+{
+};
+
+#endif
+
 template <>
 struct _LIBCPP_TYPE_VIS_ONLY hash<float>
     : public __scalar_hash<float>

Modified: libcxx/trunk/test/std/utilities/function.objects/unord.hash/integral.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/function.objects/unord.hash/integral.pass.cpp?rev=266587&r1=266586&r2=266587&view=diff
==============================================================================
--- libcxx/trunk/test/std/utilities/function.objects/unord.hash/integral.pass.cpp (original)
+++ libcxx/trunk/test/std/utilities/function.objects/unord.hash/integral.pass.cpp Sun Apr 17 21:54:00 2016
@@ -67,7 +67,7 @@ int main()
 	test<int16_t>();
 	test<int32_t>();
 	test<int64_t>();
-	
+
 	test<int_fast8_t>();
 	test<int_fast16_t>();
 	test<int_fast32_t>();
@@ -80,12 +80,12 @@ int main()
 
     test<intmax_t>();
     test<intptr_t>();
-	
+
 	test<uint8_t>();
 	test<uint16_t>();
 	test<uint32_t>();
 	test<uint64_t>();
-	
+
 	test<uint_fast8_t>();
 	test<uint_fast16_t>();
 	test<uint_fast32_t>();
@@ -98,4 +98,9 @@ int main()
 
     test<uintmax_t>();
     test<uintptr_t>();
+
+#ifndef _LIBCPP_HAS_NO_INT128
+    test<__int128_t>();
+    test<__uint128_t>();
+#endif
 }

Modified: libcxx/trunk/www/cxx1z_status.html
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx1z_status.html?rev=266587&r1=266586&r2=266587&view=diff
==============================================================================
--- libcxx/trunk/www/cxx1z_status.html (original)
+++ libcxx/trunk/www/cxx1z_status.html Sun Apr 17 21:54:00 2016
@@ -167,7 +167,7 @@
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2072">2072</a></td><td>Unclear wording about capacity of temporary buffers</td><td>Kona</td><td>Complete</td></tr>
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2101">2101</a></td><td>Some transformation types can produce impossible types</td><td>Kona</td><td>Complete</td></tr>
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2111">2111</a></td><td>Which <tt>unexpected</tt>/<tt>terminate</tt> handler is called from the exception handling runtime?</td><td>Kona</td><td>Complete</td></tr>
-	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2119">2119</a></td><td>Missing <tt>hash</tt> specializations for extended integer types</td><td>Kona</td><td></td></tr>
+	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2119">2119</a></td><td>Missing <tt>hash</tt> specializations for extended integer types</td><td>Kona</td><td>Complete</td></tr>
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2127">2127</a></td><td>Move-construction with <tt>raw_storage_iterator</tt></td><td>Kona</td><td>Complete</td></tr>
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2133">2133</a></td><td>Attitude to overloaded comma for iterators</td><td>Kona</td><td>Complete</td></tr>
 	<tr><td><a href="http://cplusplus.github.io/LWG/lwg-defects.html#2156">2156</a></td><td>Unordered containers' <tt>reserve(n)</tt> reserves for <tt>n-1</tt> elements</td><td>Kona</td><td>Complete</td></tr>




More information about the cfe-commits mailing list