c++ enable_if的使用技巧有哪些

   2024-10-07 6070
核心提示:使用enable_if来限制模板函数的特化template typename Ttypename std::enable_ifstd::is_integralT::value, T::typefoo(T t) {re

使用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}

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号