我试图在一个函数中推断出迭代器的类型,该函数已经用模板推断出参数的类型。我想要实现的是替换在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;
};
因为我必须实例化具有不同类型的向量。