当前位置: 首页 > news >正文

地方房产网站APP如何做推广项目网站

地方房产网站APP如何做,推广项目网站,做网站一个月能挣多少,做外围的都上什么网站找1 SFINAE。 2 条件特化。可用作额外的函数参数&#xff08;不可应用于运算符重载&#xff09;、返回类型&#xff08;不可应用于构造函数与析构函数&#xff09;&#xff0c;或类模板或函数模板形参。 函数参数&#xff1a; #include <iostream> #include <type_tra…

1 SFINAE。

2 条件特化。可用作额外的函数参数(不可应用于运算符重载)、返回类型(不可应用于构造函数与析构函数),或类模板或函数模板形参。

函数参数:

#include <iostream>
#include <type_traits>
using namespace std; template <typename T>
T  addT(T  value, typename std::enable_if<std::is_integral<T>::value, T>::type* = nullptr)
{return value + 10;
}template <typename T>
T  addT(T value, typename std::enable_if<std::is_floating_point<T>::value, T>::type* = nullptr)
{return value + 5;
}int  main()
{int d = 10;double f = 20;d = addT(d);f = addT(f);return 0;}

单独看这个例子是比较模糊,因为编译器做了自动补充:d = addT(d, nullptr);通过如下网站可以展开上面代码

C++ Insights

#include <iostream>
#include <type_traits>
using namespace std;template<typename T>
T addT(T value, typename std::enable_if<std::is_integral<T>::value, T>::type *)
{return operator+(value, 10);
}/* First instantiated from: insights.cpp:22 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
int addT<int>(int value, typename std::enable_if<std::is_integral<int>::value, int>::type *)
{return value + 10;
}
#endiftemplate<typename T>
T addT(T value, typename std::enable_if<std::is_floating_point<T>::value, T>::type *)
{return operator+(value, 5);
}/* First instantiated from: insights.cpp:23 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
double addT<double>(double value, typename std::enable_if<std::is_floating_point<double>::value, double>::type *)
{return value + 5;
}
#endifint main()
{int d = 10;double f = 20;d = addT(d, nullptr);f = addT(f, nullptr);return 0;
}

函数返回值:

#include <type_traits>
#include <iostream>template <typename T>
typename std::enable_if <std::is_integral<T>::value, T>::type  addT(T value)
{return value + 10;
}template <typename T>
typename std::enable_if <std::is_floating_point<T>::value, T>::type  addT(T value)
{return value + 5.0;
}int main()
{int d = 10;double f = 20;d = addT(d);  //d = 20f = addT(f);  //f = 25.000000000return 0;
}

std::is_integral 用法参考:https://cplusplus.com/reference/type_traits/is_integral/

编译展开后的代码如下:

#include <type_traits>
#include <iostream>template<typename T>
typename std::enable_if<std::is_integral<T>::value, T>::type addT(T value)
{return value + 10;
}/* First instantiated from: insights.cpp:20 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
typename std::enable_if<std::is_integral<int>::value, int>::type addT<int>(int value)
{return value + 10;
}
#endiftemplate<typename T>
typename std::enable_if<std::is_floating_point<T>::value, T>::type addT(T value)
{return value + 5.0;
}/* First instantiated from: insights.cpp:21 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
typename std::enable_if<std::is_floating_point<double>::value, double>::type addT<double>(double value)
{return value + 5.0;
}
#endifint main()
{int d = 10;double f = 20;d = addT(d);f = addT(f);return 0;
}

模版类特化:

#include <type_traits>
#include <iostream>template <typename T, typename Enable = void>
class MyTestClass
{// 默认实现,适用于所有类型
public:MyTestClass() {std::cout << "default";}
};template <typename T>
class MyTestClass<T, typename std::enable_if<std::is_integral<T>::value>::type>
{// 整型类型的特化实现
public:MyTestClass() {std::cout << "int";}
};template <typename T>
class MyTestClass<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
{// 浮点型类型的特化实现
public:MyTestClass() {std::cout << "float";}
};
int main()
{MyTestClass<std::string>  x1;// OK :匹配初等模板MyTestClass<int>  x2;        // OK :匹配偏特化 int MyTestClass<double>  x3;     // OK :匹配偏特化 doublereturn 0;
}

模版展开后代码如下:

#include <type_traits>
#include <iostream>template<typename T, typename Enable = void>
class MyTestClass
{public: inline MyTestClass(){std::operator<<(std::cout, "default");}};/* First instantiated from: insights.cpp:35 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
class MyTestClass<std::basic_string<char>, void>
{public: inline MyTestClass(){std::operator<<(std::cout, "default");}};#endif
/* First instantiated from: insights.cpp:36 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
class MyTestClass<int, void>
{public: inline MyTestClass(){std::operator<<(std::cout, "int");}};#endif
/* First instantiated from: insights.cpp:37 */
#ifdef INSIGHTS_USE_TEMPLATE
template<>
class MyTestClass<double, void>
{public: inline MyTestClass(){std::operator<<(std::cout, "float");}};#endiftemplate<typename T>
class MyTestClass<T, typename std::enable_if<std::is_integral<T>::value>::type>
{public: inline MyTestClass(){std::operator<<(std::cout, "int");}};template<typename T>
class MyTestClass<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
{public: inline MyTestClass(){std::operator<<(std::cout, "float");}};int main()
{MyTestClass<std::basic_string<char>, void> x1 = MyTestClass<std::basic_string<char>, void>();MyTestClass<int, void> x2 = MyTestClass<int, void>();MyTestClass<double, void> x3 = MyTestClass<double, void>();return 0;
}

参考文档:

https://cplusplus.com/reference/type_traits/is_integral/

std::enable_if - cppreference.com

C++之std::enable_if_std enable if-CSDN博客

C++模板编程 | `std::enable_if` 和 SFINAE_模板类 std::enable-CSDN博客

http://www.ds6.com.cn/news/5335.html

相关文章:

  • 网站建设几种语言对比引流推广犯法吗
  • 网站已改版百度一下百度官方网
  • 网站后台管理代码上海优化网站seo公司
  • 做网站建设的怎么拓展业务培训机构哪家最好
  • 儿童网站欣赏微信crm
  • 保山公司做网站百度平台app下载
  • 衡阳网站开发有哪些公司十堰seo排名公司
  • 中国工商注册网官网网址平板电视seo优化关键词
  • 省心的免费建站服务热线网站优化+山东
  • 动态网站开发的目录结构南宁企业官网seo
  • 网站网址前的小图标怎么做seo技术员
  • 网站建设设计学前端去哪个培训机构
  • 优就业seo怎么样志鸿优化网下载
  • 怎样免费做公司网站长沙seo关键词排名优化
  • 网页动画制作软件青岛seo培训
  • 做网站域名重要吗广州seo工作
  • 怎样查看网站开发seo标题优化
  • 网站制作原理淮北seo
  • 手机网站的好外宁波seo智能优化
  • 重庆做网站建设公司连接友谊
  • 企业画册设计制作多少关键词排名优化软件
  • 广州建设银行投诉网站企业培训方案
  • 互联网网站建设趋势常见的网站推广方法
  • 做网站的公司深在线培训平台
  • 网站内部数据搜索怎么做镇江交叉口优化
  • 手机做网站怎么做seo点击排名软件哪家好
  • 企业网站建设webbj刷赞网站推广ks
  • 爱搜索中级网站建设代发关键词排名包收录
  • 有没有a站可以打开重庆seo推广
  • 河南疫情最新通报百度seo培训