#define _CRT_SECURE_NO_WARNINGS //宏,用于禁止vs安全检查(例如4996错误)
#include<iostream>
struct _myfun3 //自定义结构体
{
int data;
double db;
};
struct _myfun2 //自定义结构体
{
int data;
char c;
};
//模版函数
template <class T1,class T2>
auto add(T1 t1, T2 t2) ->decltype(t1 + t2) //函数属于后置返回值函数,需要配合auto占位符
{
return t1 + t2;
}
//模版函数,重载加号
template <class T1, class T2>
auto operator +(T1 t1, T2 t2)->decltype(t1.data + t2.data) //auto 占位符,decltype 获取表达式类型
{
return t1.data + t2.data;
}
int main()
{
_myfun2 fu2 = {}; //结构体实例化
_myfun3 fu3 = {};//结构体实例化
fu2.data = 20;
fu2.c = 'a';
fu3.data = 333;
fu3.db = 20.2;
auto auto_type = add(fu2, fu3); //调用模版函数
std::cout << "auto_type: " << (auto_type) << std::endl;
return 0;
}
c++ 模版、自定义结构体、auto起占位符作用、decltype关键字获取表达式类型,auto 函数名(参数)->decltype(x+y){},后置返回值函数
最新推荐文章于 2024-06-16 21:08:53 发布