一种 C++20 以前封装 SFINAE 的办法:
template<class T, class = std::enable_if_t<std::is_arithmetic_v<T>>>
using Arithmetic = T;

template<class T>
void foo(Arithmetic<T>);
和 C++20 的 concept 写法很近似了:
template<class T>
concept Arithmetic = std::is_arithmetic_v<T>;

template<Arithmetic T>
void foo(T);
 
 
Back to Top