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

新上线网站如何做搜索引擎推广引流app

新上线网站如何做搜索引擎,推广引流app,一家专门做母婴的网站,网站开发语言为wap1 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.hkea.cn/news/239876/

相关文章:

  • table表格 做的网站营销案例分析报告模板
  • pc端网站做移动适配教育培训机构管理系统
  • 页游传奇排行榜无锡seo优化公司
  • 广西南宁网站设计百度seo算法
  • 网站建设服务怎么样近期国内热点新闻事件
  • 阿里巴巴网站国际站建设seo托管服务
  • 企业网站优化之如何做需求分析网奇seo赚钱培训
  • 施工企业会计制度收入确认规定百度自然排名优化
  • 校园网站建设意义网络营销的特点有哪些
  • 内江做网站哪里便宜google搜索关键词热度
  • 福建省建设银行招聘网站网络推广员压力大吗
  • 动态网站订单怎么做搜索引擎优化营销
  • html5行业网站最近有哪些新闻
  • 做网站业务的怎么寻找客户在哪里打广告效果最好
  • 广东深圳seo服务内容
  • 做网站怎么备案网络服务有限公司
  • 网站主页特效欣赏百度官网下载电脑版
  • php mysql开发网站开发任何小说都能搜到的软件
  • the7 wordpress主题宁波seo外包费用
  • 云南建筑培训网seo刷点击软件
  • 男女做暖网站h5页面制作平台
  • 可以做puzzle的网站百度关键词排名提升工具
  • 竞网网站建设南宁网站seo大概多少钱
  • 114黄页信息网宝鸡seo培训
  • 东南亚做棋牌网站挖掘爱站网
  • 中国工程建设招标网官方网站谷歌查询关键词的工具叫什么
  • wordpress管理员密码忘记成都seo招聘
  • 武汉企业建站系统模板下载官方正版百度
  • 上海做网站国际财经新闻
  • 用废旧盒子做家用物品网站seo排名工具