Error en la función de plantilla (usando Boost.TUPLES)
-
27-09-2020 - |
Pregunta
#include <list>
#include <boost/tuple/tuple.hpp>
template<class InputIterator>
void f(InputIterator it)
{
typedef boost::tuple<typename InputIterator::value_type, int> Pair;
std::list<Pair> paired;
typename std::list<Pair>::const_iterator output;
for(output=paired.begin(); output!=paired.end(); ++output)
{
output->get<1>();
}
}
Estoy recibiendo bibliotecas con esta función de plantilla.GCC 4.1.2 ( Codepad.org ) Informa el siguiente error:
In function 'void f(InputIterator)':
Line 12: error: expected primary-expression before ')' token
compilation terminated due to -Wfatal-errors.
¿Podría alguien más experimentado con las plantillas ofrecer consejos?¿O bien el problema o las frases clave para investigarme?Esto me ha atascado.
Solución
Debido a que get
es una plantilla de función y el tipo de output
depende del parámetro de plantilla InputIterator
, debe usar la palabra clave template
:
output->template get<1>();
The Plantilla de comau c ++ Preguntas frecuentes Tiene una buena descripción de por qué es necesario esto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow