嵌套的成员函数class returns 嵌套的类型class

Member function of nested class returns type of nested class

我在 class 中有一个这样的结构

template <class T>
class a {
    struct b {
        int var;
        b *foo(const T&);
    };
    int var;
};

我想在 struct b 之外定义 foo

我该怎么做?

template <class T>
typename a<T>::b* a<T>::b::foo(const T&)
{
    //code
}