新人求问 一个 STL特化的问题

「已注销」 2017-01-04 11:47:15
template<typename T>
void foo(T& t){
cout << typeid(t).name() << endl;
}

void foo(char const* (&i)[]){ //这里数组不写大小会报错 但是写了感觉不能达到我的要求
cout << typeid(i).name() << endl;
}

int main(){
int a[5]={0};
foo(a);
char const* c[5] = {"ab","cd","ef","gh","ij"};
foo(c)
}
我想针对指针数组单独特化一种情况 但是上面 参数里面感觉怎么写都不对 ,
这怎么办??????????????

...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2017-01-05
  • 打赏
  • 举报
回复
你这个确实不是特化 只是普通函数而已,然后查找的时候优先选择了你的普通函数 7L
fefe82 2017-01-05
  • 打赏
  • 举报
回复
template<size_t sz> void foo(char const* (&i)[sz]) { ... }
sdghchj 2017-01-05
  • 打赏
  • 举报
回复
你这不是特化,是函数重载。 传数组引用的时候必须传大小,即使是模板也要指定大小参数。如果不是传引用就会退化为指针。
「已注销」 2017-01-04
  • 打赏
  • 举报
回复
我要求传参的时候 传数组整体 而不只传首元素的地址 模板就能做到,为什么我自己写个普通函数就做不到?????????

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧