¿Cómo especializo una plantilla anidada? (Consulte el error a continuación.)La especialización de plantilla anidada resulta en "Uso ilegal de argumentos de plantilla explícitos"?
using std::reverse_iterator;
template<typename It>
reverse_iterator<It> make_reverse_iterator(const It &it)
{
return reverse_iterator<It>(it);
}
template<typename It>
It make_reverse_iterator<reverse_iterator<It> >(const reverse_iterator<It> &it)
{
// Above ^
// error C2768:
// 'make_reverse_iterator': illegal use of explicit template arguments
return it.base();
}
¿Dónde está la plantilla anidada en el ejemplo? Todo lo que veo es una especialización de función parcial, que no está permitida. –
@ R.MartinhoFernandes: Tal vez utilicé el término equivocado ... Me refiero a especializar para el 'reverse_iterator 'templado', basado en el tipo ('anidado)' It'. –
Mehrdad
La especialización parcial de plantillas de funciones no está permitida, ¿no es esto lo que sucede aquí? – Jon