#include <iostream>
template <typename T> struct Foo
{
void print();
};
template <typename T> void Foo<T>::print()
{
std::cout << "Generic Foo<T>::print()\n";
}
template <> void Foo<int>::print()
{
std::cout << "Specialized Foo<int>::print()\n";
}
int main()
{
Foo<char> x;
Foo<int> y;
x.print();
y.print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBGb28KewogICAgdm9pZCBwcmludCgpOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgRm9vPFQ+OjpwcmludCgpCnsKICAgIHN0ZDo6Y291dCA8PCAiR2VuZXJpYyBGb288VD46OnByaW50KClcbiI7Cn0KCnRlbXBsYXRlIDw+IHZvaWQgRm9vPGludD46OnByaW50KCkKewogICAgc3RkOjpjb3V0IDw8ICJTcGVjaWFsaXplZCBGb288aW50Pjo6cHJpbnQoKVxuIjsKfQoKaW50IG1haW4oKQp7CiAgICBGb288Y2hhcj4geDsKICAgIEZvbzxpbnQ+ICB5OwoKICAgIHgucHJpbnQoKTsKICAgIHkucHJpbnQoKTsKfQo=