使用字符串作为函数模板的实参
来源:互联网 发布:索尼降噪豆测评 知乎 编辑:程序博客网 时间:2024/06/02 13:08
有时,把字符串传递给函数模板的引用参数会导致出人意料的运行结果,如:
template <typename T>
inline T const& max(T const& a,T const& b)
{
return a < b ? a : b;
}
max("apple","peach"); // ok:相同类型的实参
max("apple","banana"); //error:不同类型的实参
问题在于:由于长度的区别,这些字符串属于不同的数组类型。也就是说,apple和peach具有相同的类型 char const[6],然而banana的类型是char const[7]。因此只有第一个调用是合法的。因为该max()模板期望的是类型完全相同的参数。然而,如果声明的是非引用参数,你就可以使用长度不同的字符串来作为max()的参数了。
产生这种结果的原因是:对于非引用的参数,在实参演绎的过程中,会出现数组到指针(array-to-pointer)的类型转换。
- 使用字符串作为函数模板的实参
- C++基础——使用字符串作为函数模板的实参
- C++ template -- 字符串作为函数模板实参
- 字符串作为函数模版实参的意外情况
- 字符串作为函数模版实参的特殊情况
- 模板类型实参和非类型实参的使用 ----- 基于模板的函数指针的使用
- 一个函数作为另一个函数的实参
- 【读书笔记】以函数作为算法的实参
- 流作为函数实参
- 数组作为函数实参
- string 作为函数实参
- 编写一个主函数 main,使用两个值作为实参,并输出它们的和。
- C语言中实参和形参问题&&函数使用数组作为参数的问题
- 函数模板 ---实参的演绎(deduction)
- 注意C++模板函数的实参
- 函数调用可以作为一个函数的实参
- 比较两个字符串的大小(两种方法,重点在介绍数组元素可以作为函数的实参)
- 用字符串作为函数模版的实参
- j2me的模仿写短信平台
- 在txt文件里进行查询(winform案例简单)
- 苹果第三季度美国数字音乐市场份额增长至66%
- c语言面试题-----指针篇
- Funny Funny Game
- 使用字符串作为函数模板的实参
- 通配符
- ARM与x86–蝶变ARM(力荐弯曲评论)
- j2me的ChoiceGroup 的运用
- lucene.net2.9搜索Demo
- 字符数组与字符指针的区别。
- 多个按钮样式下载
- union all 和 union的区别
- 使用JAVA开发CORBA应用