找不到此问题的适当名称。
我有一个模板类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?
答案 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=...;
}