Wie deklariere ich eine Template-Funktion außerhalb der Klassendeklaration?

<code>#include <iterator>
#include <map> 
#include <vector>

template <class T1, class T2>
class A
{
public:

    typedef typename std::vector<std::pair<T1,T2> >::iterator iterator;

    std::pair<iterator, bool > foo()
    {
        iterator aIter;
        return std::pair<std::vector<std::pair<T1,T2> >::iterator, bool >(aIter ,false);
    }
};
</code>

Der obige Code funktioniert gut für mich. Aber ich möchte die Definition der Funktion außerhalb der Klassendeklaration verschieben. Ich habe es versucht.

<code>template <class T1, class T2>
class A
{
public:

    typedef typename std::vector<std::pair<T1,T2> >::iterator iterator;

    std::pair<iterator, bool > foo();
};

template <class T1, class T2>
std::pair<std::vector<std::pair<T1,T2> >::iterator, bool > A<T1, T2>::foo()
{
    iterator aIter;
    return std::pair<std::vector<std::pair<T1,T2> >::iterator, bool >(aIter ,false);
}
</code>

Es wird aber nicht kompiliert. Irgendeine Idee, wie das geht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage