22template<
typename T,
typename U,
23 typename = std::enable_if_t<std::is_arithmetic_v<T> && std::is_arithmetic_v<U> &&
24 std::is_floating_point_v<T> == std::is_floating_point_v<U> &&
25 std::is_signed_v<T> == std::is_signed_v<U> &&
26 !std::is_same_v<T, bool> && !std::is_same_v<U, bool> &&
27 !std::is_same_v<T, char> && !std::is_same_v<U, char>>>
30 using type =
decltype(T() + U());