我试图编写一个函数来处理一系列数据。
//For stl containers
template<typename T>
void foo(T x){
for(auto iter=x.begin();iter!=x.end();++iter)
do_something(*iter);
}
此功能旨在操作STL容器,可以。但是我想要C数组的另一个版本。所以我尝试了这个:
//For C-array
template<typename T,size_t N>
void foo(T x[N]){
//blabla
}
//Error
我已经阅读了“数组的部分模板专门化”(以及其他几篇相关的文章),但是它是针对类模板的。而且我也知道,当您专门设计功能模板时,实际上是在重载它。无论如何,该帖子中的解决方案无法在此处实现。
我可以采取任何(或可能没有)方式吗?:-) Thx容忍我的英语不佳,thx为您提供帮助。
您错过了对数组的引用:
template<typename T, size_t N>
void foo(T (&x)[N]){
//blabla
}
顺便说一句,在您的情况下,您可以const
在一般情况下简单地使用()引用:
template<typename T>
void foo(T& x){
using std::begin;
using std::end;
for (auto iter = begin(x); iter != end(x); ++iter)
do_something(*iter);
}
甚至更好:
template<typename T>
void foo(T& x){
for (auto&& e : x)
do_something(x);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句