c++ 模版、自定义结构体、auto起占位符作用、decltype关键字获取表达式类型,auto 函数名(参数)->decltype(x+y){},后置返回值函数

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值