テンプレートを勉強中なのですが、以下のコードがVC++.NET2003上でうまくコンパイルできません。
エラーの原因を教えていただけませんか?
#include <iostream>
#include <string>
template<class stringT>
class test {
private:
stringT str_;
public:
test(stringT str) : str_(str) {}
stringT::size_type get_str(){
return str_.find("e", 0);
}
};
int main() {

test<std::string> str("test");

std::cout<<str.get_str()<<std::endl;

return 0;
}
これをコンパイルすると以下のようなエラーメッセージが出ます。

warning C4346: 'stringT::size_type' : 依存名は型ではありません。
error C2146: 構文エラー : ';' が、識別子 'get_str' の前に必要です。
warning C4183: 'get_str': 戻り値の型がありません。'int' を返すメンバ関数とみなします。