我试图编写一个函数来对一系列数据做任何事情。C++:数组函数模板专门化
//For stl containers
template<typename T>
void foo(T x){
for(auto iter=x.begin();iter!=x.end();++iter)
do_something(*iter);
}
此功能被设计用来操作STL容器,并且没问题。但是我想要C-array的另一个版本。所以,我想这一点:
//For C-array
template<typename T,size_t N>
void foo(T x[N]){
//blabla
}
//Error
我读过"Partial template specialization for arrays"(和一些其他相关文章),但它是类模板。而且我也知道,当你专门研究一个函数模板时,你实际上是在重载它。无论如何,该帖子中的解决方案无法在这里实现。
任何(或可能没有)方式我可以这样做吗? :-) Thx为容忍我可怜的英语和thx为您的帮助。
请记住,在参数声明,'T [N]'和'T *'是一样的。由于尺寸信息丢失,无法推导出“N”,因此当其模板参数未明确指定时,模板将作为超载候选项被拒绝。你可以使用引用来满足这个('T(&)[N]'),但我真的推荐使用迭代器来推广这个操作。 – 0x499602D2 2014-10-06 13:28:47
除了学习任何答案外,还要看看'std :: for_each' – Bathsheba 2014-10-06 13:29:48