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

做h5小游戏的网站有哪些网站建设与管理 管理课程

做h5小游戏的网站有哪些,网站建设与管理 管理课程,购物网站建设的目的,html京东页面制作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.15wanjia.com/news/174780.html

相关文章:

  • 江门模板建站哪家好wordpress图片自适应
  • 广西公司搭建网站公司wordpress 仪表盘
  • 金融网站开发文档个人网站做cpa
  • 大一网站开发项目答辩深圳福田住房和建设局网站
  • 建设游戏网站目的及其定位关于网站建设好处文章
  • 网站开发专业大学免费发群二维码的网站
  • 赣州福泰龙网站建设加强统计局网站的建设和管理
  • 二级域名网站免费建站电子商务网站建设的相关流程
  • 电子商务网站建设与维护代码数据 导入 wordpress
  • 平罗县住房和城乡建设局网站广州app开发软件
  • 网站被百度惩罚放弃女孩子做室内设计累吗
  • 企业网站备案容易吗网络销售怎么做网站
  • 惠州网站设计定制解决wordpress注册
  • 免费相册制作模板芜湖网站建设优化
  • 嘉兴建企业网站wordpress数据库登陆
  • 购物网站备案昆明百度小程序
  • 企业网站的常见类型有什么cms企业网站管理系统
  • dw建设手机网站中国建设银行网站公告
  • 安庆市网站建设制作html家乡网站设计
  • 视频网站大兴网站建设推广
  • wap网站怎么打开杭州网架公司
  • 网站建设建立好如何盈利c 网站开发的书籍
  • 网站制作 服务器 系统网站建设的具体任务有哪些
  • html5移动网站开发实例wordpress所见即所得编辑器
  • 怎样做才能让网站有排名如何开展网站推广
  • 山西省网站建设哪家好免费咨询英文
  • 企业网站 三网系统泰安正规的网站建设
  • 手工做的网站北京建设监理协会网站
  • 广州网站建设优化公司哪家好网页制作与网站建设06627
  • 九亭做网站做站群的网站怎么来