在函数模板中推导迭代器类型?

Kia*_*rot 1 c++ iterator auto c++11

我试图在函数中推导出迭代器的类型,该函数已经用模板推导出了参数的类型.我想要实现的是替换关键字auto,它在C++ 11标准中具有类似的功能.最初我有以下功能:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

这适用于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;
    }
Run Code Online (Sandbox Code Playgroud)

你会怎么解决这个问题?

注意:我通常使用以下类型调用此函数,

template <class T>
struct Generic_t {
    typedef std::vector<T> Array;
};
Run Code Online (Sandbox Code Playgroud)

因为我必须实例化具有不同类型的向量.

For*_*veR 6

您应该使用,typename Type::iterator因为它是依赖名称.在这里阅读更多