#include <iostream>
template<typename T>
struct C
{
struct Nested
{
Nested* get();
};
};
template<typename T>
auto C<T>::Nested::get() -> Nested*
{
return this;
}
int main()
{
C<int>::Nested n;
std::cout << n.get();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IEMKewoJc3RydWN0IE5lc3RlZAoJewoJCU5lc3RlZCogZ2V0KCk7Cgl9Owp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KYXV0byBDPFQ+OjpOZXN0ZWQ6OmdldCgpIC0+IE5lc3RlZCoKewoJcmV0dXJuIHRoaXM7Cn0KCmludCBtYWluKCkKewoJQzxpbnQ+OjpOZXN0ZWQgbjsKCXN0ZDo6Y291dCA8PCBuLmdldCgpOwoJcmV0dXJuIDA7Cn0=