重载函数模板

时间:2020-12-25 05:33:49

函数模板与非模板函数之间的主要区别在于对实参隐式转换的支持度。非模板函数允许对实参进行广泛的隐式转换,从内建转换(例如类型提升)到用户自定义转换(借助未表以explicit的单参构造函数和转换操作符)。对于函数模板来说,由于编译器必须基于调用的实参类型来执行模板实参推导,因此只支持一些琐细的隐式转换,这句话设计外层修饰(例如从T到const T,或从const T 到T).引用(例如从T到T&)以及从数组和函数退化指针(从T[42]到T*)等情形。