1

テンプレートを使用して引数の型を既に推測している関数で、反復子の型を推測しようとしています。私が達成しようとしているのは、 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;
};

さまざまなタイプのベクトルをインスタンス化する必要があるためです。

4

1 に答える 1

6

typename Type::iterator従属名であるため、使用する必要があります。詳細はこちら

于 2013-06-13T12:48:12.850 に答える