0

この問題の適切な名前が見つかりませんでした。

ネストされたイテレータ クラスを含むテンプレート クラス Array があります。

class Array<T>::Iterator

関数「ソート」を定義したい:

template <typename T, class RAIterator>
void sort(RAIterator start, RAIterator end);

問題は、g++ が関数のシグネチャから T を推測できないことです。関数を T の指定 (例: sort<T>(...) ) から独立させたいので、この (明らかに間違った) 構文について考えていました。

template <typename T, class RAIterator<typename T>>
void sort(RAIterator start, RAIterator end);

実際にコンパイラに T を理解させる方法はありますか?

4

1 に答える 1

4

iterator クラス内で T の typedef を作成する必要があります。その後、sort 関数内でこれにアクセスできます。

template <typename T>
class Array{
    class Iterator{
        typedef T value;
    }
}

template <class RAIterator>
void sort(RAIterator start, RAIterator end){

    typename RAIterator::value &v=...;   
}
于 2013-06-10T10:53:13.127 に答える