Fix build with libc++ 23 libc++ marks std::is_arithmetic, is_floating_point and is_signed as no_specializations, and its is_floating_point_v and is_signed_v don't use the class templates at all. Use the rocWMMA traits on the host too (as with hipRTC), so the float8 and xfloat32 specializations go there instead of into std. --- a/library/include/rocwmma/internal/utility/type_traits.hpp +++ b/library/include/rocwmma/internal/utility/type_traits.hpp @@ -114,16 +114,16 @@ using std::enable_if_t; using std::false_type; using std::integral_constant; - using std::is_arithmetic; - using std::is_arithmetic_v; + using detail::is_arithmetic; + using detail::is_arithmetic_v; using std::is_array; using std::is_array_v; using std::is_const; using std::is_const_v; using std::is_convertible; using std::is_convertible_v; - using std::is_floating_point; - using std::is_floating_point_v; + using detail::is_floating_point; + using detail::is_floating_point_v; using std::is_function; using std::is_function_v; using std::is_integral; @@ -136,8 +136,8 @@ using std::is_rvalue_reference_v; using std::is_same; using std::is_same_v; - using std::is_signed; - using std::is_signed_v; + using detail::is_signed; + using detail::is_signed_v; using std::is_standard_layout; using std::is_trivial; using std::is_void; @@ -156,7 +156,7 @@ } // namespace rocwmma -#define ROCWMMA_TYPE_TRAITS_IMPL_NAMESPACE std +#define ROCWMMA_TYPE_TRAITS_IMPL_NAMESPACE rocwmma::detail #endif // defined(__HIPCC_RTC__) || defined(__clang__)