
template<typename T>
struct Outer
{
    struct Inner;

    auto f(Inner) -> void;
};

template<class T>
auto Outer<T>::f(Inner) -> void
{

}

int main() {}