summaryrefslogtreecommitdiff
path: root/sci-libs/hipBLASLt/files/hipBLASLt-6.4.1-libcxx-integrals.patch
blob: dcf2092d08bbc709b86f8660822c7d6ff146e69a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Libc++ lands on generic mathod and fails with `std::uniform_int_distribution<char>` (bad integer type)
--- a/clients/include/hipblaslt_random.hpp
+++ b/clients/include/hipblaslt_random.hpp
@@ -88,18 +88,34 @@ class hipblaslt_nan_rng
 
 public:
     // Random integer
-    template <typename T, std::enable_if_t<std::is_integral<T>{}, int> = 0>
+    template <typename T, std::enable_if_t<
+        std::is_integral<T>::value &&
+        !std::is_same<T, signed char>::value &&
+        !std::is_same<T, unsigned char>::value,
+    int> = 0>
     explicit operator T()
     {
         return std::uniform_int_distribution<T>{}(t_hipblaslt_rng);
     }
 
+    // Random unsigned char
+    explicit operator unsigned char()
+    {
+        return static_cast<char>(std::uniform_int_distribution<unsigned>{}(t_hipblaslt_rng));
+    }
+
     // Random signed char
     explicit operator signed char()
     {
         return static_cast<signed char>(std::uniform_int_distribution<int>{}(t_hipblaslt_rng));
     }
 
+    // Random char
+    explicit operator char()
+    {
+        return static_cast<char>(std::uniform_int_distribution<int>{}(t_hipblaslt_rng));
+    }
+
     // Random NaN double
     explicit operator double()
     {