0

找不到适合此问题的名称。

我有一个模板类数组,其中包含一个嵌套的迭代器类

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

您应该在迭代器类中创建 T 的 typedef,然后您可以在排序函数中访问它:

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 回答