Fehler in der Template-Funktion (mit Boost.Tupeln)
-
27-09-2020 - |
Frage
#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>();
}
}
Ich erhalte Bibliotheken mit dieser Vorlagenfunktion.GCC 4.1.2 (codepad.org) meldet den folgenden Fehler:
In function 'void f(InputIterator)':
Line 12: error: expected primary-expression before ')' token
compilation terminated due to -Wfatal-errors.
Könnte jemand, der mehr Erfahrung mit Vorlagen hat, Ratschläge geben?Entweder das Problem oder Schlüsselphrasen, um selbst zu recherchieren?Das hat mich festgefahren.
Lösung
Da get
ist eine Funktionsvorlage und der Typ von output
ist abhängig vom Template-Parameter InputIterator
, müssen Sie die verwenden template
Schlusselwort:
output->template get<1>();
Der Häufig gestellte FRAGEN zu Comeau C ++ - Vorlagen hat eine gute Beschreibung, warum dies notwendig ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow