找不到适合此问题的名称。
我有一个模板类Array,其中包含嵌套的迭代器类
class Array<T>::Iterator
我想定义一个函数“排序”:
template <typename T, class RAIterator>
void sort(RAIterator start, RAIterator end);
问题是,g ++无法从函数的签名中推断出T。由于我希望函数独立于指定T(例如sort (...)),因此我在考虑以下(显然是错误的)语法:
template <typename T, class RAIterator<typename T>>
void sort(RAIterator start, RAIterator end);
有没有一种方法可以让编译器实际计算出T?
最佳答案
您应该在迭代器类中创建一个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=...;
}
关于c++ - 嵌套类模板问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17022074/