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.

War es hilfreich?

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
scroll top