【发布时间】:2013-06-13 12:47:17
【问题描述】:
我试图在一个函数中推断出迭代器的类型,该函数已经使用模板推断出参数的类型。我想要实现的是替换 C++11 标准中具有类似功能的关键字 auto。最初我有以下功能:
template<typename Type> bool activeExtension(Type &arr)
{
for (auto it=arr.begin(),
ite=arr.end();
it!=ite;
++it)
{
if (*it != 0)
return true;
}
return false;
}
这可以完美地为 C++11 标准编译。但是事情发生了变化,我不能再使用这些功能了。
我正在尝试在没有关键字 auto 的情况下实现相同的功能。所以我想到了模板。
到目前为止,我尝试的是这样的:
template<typename Type> bool activeExtension(Type &arr)
{
for (Type::iterator it=arr.begin(),
ite=arr.end();
it!=ite;
++it)
{
if (*it != 0)
return true;
}
return false;
}
你会怎么解决这个问题?
注意: 我通常用以下类型调用这个函数,
template <class T>
struct Generic_t {
typedef std::vector<T> Array;
};
因为我必须实例化不同类型的向量。
【问题讨论】: