是否允许在范围外声明嵌套类对象?

xml*_*lmx 5 c++ inner-classes decltype private-members c++11

#include <type_traits>

auto f()
{
    struct A { int f() { return 0; } };

    return A();
}

int main()
{
    std::remove_cvref_t<decltype(f())> a;

    return a.f();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以编译成功。我只是好奇:

按照 C++ 标准是否合法?