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?