c++ 笔记(函数模版)

//编译期间, 生成对应的Sub<int>和Sub<double> (eg)
template <class T>  
T Sub(T tv1, T tv2)
{		
	return tv1 + tv2;
}


template <typename T, typename U>
//auto Add(T tv1, U tv2) //auto用于表达推导返回值类型的含义。
auto Add(T tv1, U tv2) -> decltype(tv1 + tv2) //返回类型后置语法,这里的auto只是返回类型后                                                
                                              //置语法的组成部分,并没有类型推导的含义
{
		return tv1 + tv2;
}


//偏特化分为两种  数量上, 范围类型上
//模版函数中没有模版函数偏特化(数量上的编译报错, 范围上的是重载不是特化), 有模版泛化, 全特化, 重载
//模版函数调用优先级:普通函数, 特化, 泛化


//重载
template <class T>  
void test(T tv1)
{		
	std::cout<<tv1<<std::endl;
}
template <class T>  
void test(T* tv1)
{		
	std::cout<<tv1<<std::endl;
}
////////////////////////////////////////////
//特化
template <typename T, typename U>  //泛化
void test(T t, U u)
{		
}
template <>  //全特化
void test(int t, double u)
{		
}

template <typename T, typename U> 
void test(const T t, U u)//这是一个重载范围
{		
}

template <typename U>  //数量上特化, 编译报错
void test<int, U>(int t, U u)
{		

}

template <typename U>  //数量上特化重载(注意这个与上的区别)
void test(int t, U u)
{		

}
/////////////////////////////////////////////

//缺省参数
template <typename T, typename U, auto n = 100> 
void test(const T t, U u)
{		
}








 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值