Acabo de lanzar una biblioteca de contenedor de skiplist. Y el compilador de Sun se queja de esto:Argumentos de plantilla para las funciones de plantilla
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())));
}
Los errores son:
"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.
El código anterior es lo que se inicia en 207. Sin embargo, parece que se queja de la reverse_iterator. Realmente no puedo entenderlo. No tengo acceso directo al compilador de Sun, así que me preguntaba si estoy haciendo algo mal.
Además, sólo estoy usando un parámetro de plantilla en reverse_iterator, pero me di cuenta de la documentación de SGI diciendo que no hay ningún valor predeterminado para el segundo argumento de T. En todas partes he buscado sin embargo, sólo tiene que utilizar esto:
typedef std::reverse_iterator<iterator> reverse_iterator;
Esa es la línea 65 de la que el compilador se queja. ¿Debo agregar T como parámetro? No puedo entender el error en cuestión.
Por cierto, esto funciona en gcc en todas las plataformas que pude encontrar. Y también funciona en Borland.