template<typename T>
struct Outer
{
struct Inner;
auto f(Inner) -> void;
};
template<>
struct Outer<int>::Inner {};
template<>
struct Outer<double>::Inner {};
template<class T>
auto Outer<T>::f(Inner) -> void
{
}
int main() {}
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBPdXRlcgp7CiAgICBzdHJ1Y3QgSW5uZXI7CgogICAgYXV0byBmKElubmVyKSAtPiB2b2lkOwp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgT3V0ZXI8aW50Pjo6SW5uZXIge307Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBPdXRlcjxkb3VibGU+OjpJbm5lciB7fTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmF1dG8gT3V0ZXI8VD46OmYoSW5uZXIpIC0+IHZvaWQKewoKfQoKaW50IG1haW4oKSB7fQ==