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

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

c++ 模版、自定义结构体、auto起占位符作用、decltype关键字获取表达式类型,auto 函数名(参数)->decltype(x+y){},后置返回值函数
#define _CRT_SECURE_NO_WARNINGS //宏,用于禁止vs安全检查(例如4996错误)
#include
struct _myfun3 //自定义结构体
{
	int data;
	double db;
};
struct _myfun2 //自定义结构体
{
	int data;
	char  c;
};

//模版函数
template 
auto add(T1 t1, T2 t2) ->decltype(t1 + t2)  //函数属于后置返回值函数,需要配合auto占位符
{
	return t1 + t2;
}
//模版函数,重载加号
template 
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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4994729.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存