Ich habe gerade eine Containerbibliothek mit Auslassung veröffentlicht. Und der Sun-Compiler beschwert sich über diese:Vorlagenargumente zu Vorlagenfunktionen
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())));
}
Die Fehler sind:
"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.
Der obige Code ist, was bei 207 beginnt Aber es scheint, dass es über die reverse_iterator beschwert. Ich kann es nicht wirklich verstehen. Ich habe keinen direkten Zugriff auf den Sun-Compiler, also habe ich mich gefragt, ob ich etwas falsch mache.
Auch ich verwende nur ein Template-Argument in reverse_iterator, aber ich bemerkte die SGI-Dokumentation zu sagen, dass es keinen Standard für das zweite Argument T. ist Überall, wo ich zwar geschaut haben, sie diese nur verwenden:
typedef std::reverse_iterator<iterator> reverse_iterator;
Das ist Zeile 65, über die sich der Compiler beschwert. Muss ich T als Parameter hinzufügen? Ich kann den Fehler nicht herausfinden.
BTW, das funktioniert auf gcc auf allen Plattformen die ich finden konnte. Und es funktioniert auch in Borland.