嵌套类模板问题

时间:2013-06-10 10:46:43

标签: c++ templates

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

我有一个模板类Array,它包含一个嵌套的迭代器类

class Array<T>::Iterator

我想定义一个函数“sort”:

template <typename T, class RAIterator>
void sort(RAIterator start, RAIterator end);
问题是,g ++无法从函数的签名中推导出T.由于我希望函数独立于指定T(例如sort&lt; T&gt;(...)),我正在考虑这个(显然是错误的)语法:

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

有没有办法让编译器实现T?

1 个答案:

答案 0 :(得分:4)

你应该在迭代器类中创建一个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=...;   
}