面试题答案
一键面试#include <type_traits>
#include <cmath>
// 主模板,禁用其他类型
template<typename T, typename = std::enable_if_t<!(std::is_integral<T>::value || std::is_floating_point<T>::value)>>
void func(T) = delete;
// 整数特化,返回平方
template<typename T>
typename std::enable_if_t<std::is_integral<T>::value, T>
func(T num) {
return num * num;
}
// 浮点数特化,返回平方根
template<typename T>
typename std::enable_if_t<std::is_floating_point<T>::value, T>
func(T num) {
return std::sqrt(num);
}