Właśnie wydałem bibliotekę kontenerów z pominięciami. I kompilator Sun narzeka na ten temat:Argumenty szablonów do funkcji szablonu
template <class T, class R>
bool operator==(const IndexedSkipList<T,R> &left, const IndexedSkipList<T,R> &right)
{
return ((left.size() == right.size()) &&
(std::equal(left.begin(), left.end(), right.begin())));
}
Błędy są:
"include/CSIndexedSkipList.h", line 65: Error: Too few arguments for template std::reverse_iterator<CS::BidiIdxIterator<CS::IndexedSkipList<CS::T, CS::R>>>.
"include/CSIndexedSkipList.h", line 207: Where: While specializing "CS::IndexedSkipList<CS::T, CS::R>".
"include/CSIndexedSkipList.h", line 207: Where: Specialized in non-template code.
Powyższy kod jest to, co zaczyna się na 207. Ale wydaje się, że to narzekają na reverse_iterator. Naprawdę nie mogę tego zrozumieć. Nie mam bezpośredniego dostępu do kompilatora Sun, więc zastanawiałem się, czy robię coś nie tak.
Również jestem tylko przy użyciu jednego szablonu argumentu w reverse_iterator, ale zauważyłem dokumentacji SGI mówiąc, że nie ma domyślnego dla drugiego argumentu T. Wszędzie szukałem choć, po prostu użyć tego:
typedef std::reverse_iterator<iterator> reverse_iterator;
To jest linia 65, na którą kompiluje się kompilator. Czy muszę dodać T jako parametr? Nie mogę wykryć tego błędu.
BTW działa to na gcc na wszystkich platformach, jakie mogłem znaleźć. I działa również w Borland.