大家国庆快乐!来帮小弟我看看这个模板函数原型有啥有关问题

大家国庆快乐!来帮我看看这个模板函数原型有啥问题
#include <cstdlib>
#include <iostream>
#include <list>

using namespace std;


template <typename T>
list<T>::iterator find_last_of(list<T>& alist, const T& value);


IDE是dev cpp

编译器报错
9 D:\programming\数据结构\c6\eg6_2.cpp expected constructor, destructor, or type conversion before "find_last_of" 
9 D:\programming\数据结构\c6\eg6_2.cpp expected `;' before "find_last_of" 

请高手帮忙看看,我打破脑袋也想不出这个函数原型哪里出错了?是和iterator是嵌套类有关吗?怎么解决啊?小弟只有20分,麻烦大家帮帮忙吧~

------解决方案--------------------
template <typename T > 
list <T >::iterator find_last_of(list <T >& alist, const T& value); 
返回值最好改成:

typename list<T>::iterator
------解决方案--------------------
原因就是list<T>是个当前未知的类型,它具体是什么,只有实例化的时候才能知道(别忘了模板可能存在特化、偏特化等)。
于是,list<T>::iterator是个什么就很难说,可能是成员类型、成员变量、或者类型名。在这种情况下,有的编译器喜欢加些智能的判断,比如既然是作类型解释有意义(在楼主的程序中,表示返回值),那就先作为类型再说。而也有的编译器不喜欢作这种“编译器智能”的事情,它更喜欢程序员明确指定它,如果它确实是个类型名的话。