使用enable_if来限制模板函数的特化
template <typename T>typename std::enable_if<std::is_integral<T>::value, T>::typefoo(T t) { return t * 2;}template <typename T>typename std::enable_if<std::is_floating_point<T>::value, T>::typefoo(T t) { return t * 3.14;}使用enable_if来限制模板类的特化template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>class MyClass { // class implementation};template <typename T, typename = std::enable_if_t<std::is_floating_point<T>::value>>class MyClass { // class implementation};使用enable_if来选择模板函数的返回类型template <typename T>std::enable_if_t<std::is_integral<T>::value, T>foo(T t) { return t * 2;}template <typename T>std::enable_if_t<std::is_floating_point<T>::value, T>foo(T t) { return t * 3.14;}使用enable_if来限制模板函数的参数类型template <typename T, typename U, typename = std::enable_if_t<std::is_integral<T>::value && std::is_integral<U>::value>>void bar(T t, U u) { // function implementation}template <typename T, typename U, typename = std::enable_if_t<std::is_floating_point<T>::value && std::is_floating_point<U>::value>>void bar(T t, U u) { // function implementation}