参照のイテレータへの参照を取得する必要があります。しかし、私のコンパイラはこのコードで窒息しています:テンプレートイテレータの参照の参照を取得する
template <typename InputIterator> size_t iLongestBegin(InputIterator first, InputIterator last)
{
typedef typename std::iterator_traits<InputIterator>::reference SequenceT;
//Problem is next line
typedef typename std::iterator_traits<typename SequenceT::iterator>::reference T;
for(size_t idx; idx < first->length(); idx++)
{
T curChar = (*first)[idx];
for (InputIterator cur = first; cur != last; cur++)
{
if (cur->length() < idx)
return idx;
if (_tolower(cur->at(idx)) != _tolower(curChar))
return idx;
}
}
return first->length();
}
それを修正する方法についてのアイデアはありますか?エラーは
error C2825: 'SequenceT': must be a class or namespace when followed by '::'
ありがとうございます。 Billy3
あなたはまだいくつかのことが間違っています。 "typename T"は "T"でなければならず、 "std :: iterator_traits :: value_type :: iterator"の前に "typename"が必要です。あまりにも怠惰なコンパイラでコンパイルするように見えます。後で別のものとコンパイルしたい場合は、多くの問題が発生します –
今は私を気にしません。コンパイラだけがこれを指し示すのはmsvC++です。ありがとう、結構です :) –