How do I declare template function outside the class declaration
c++, templates, visual-studio-2008
Solution
You are again missing the typename in the return value. The function should be:
template <class T1, class T2>
std::pair<typename 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);
}
Problem
``` #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); } }; ``` The above code works fine for me. But I want to move the definition of the function outside the the class declaration. I tried this. ``` 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); } ``` But it is not compiling. Any Idea how to do this?