Libc++ lands on generic mathod and fails with `std::uniform_int_distribution` (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 {}, int> = 0> + template ::value && + !std::is_same::value && + !std::is_same::value, + int> = 0> explicit operator T() { return std::uniform_int_distribution{}(t_hipblaslt_rng); } + // Random unsigned char + explicit operator unsigned char() + { + return static_cast(std::uniform_int_distribution{}(t_hipblaslt_rng)); + } + // Random signed char explicit operator signed char() { return static_cast(std::uniform_int_distribution{}(t_hipblaslt_rng)); } + // Random char + explicit operator char() + { + return static_cast(std::uniform_int_distribution{}(t_hipblaslt_rng)); + } + // Random NaN double explicit operator double() {