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