#include <iostream>
using namespace std;
struct Cat
{
static void play(int value)
{
std::cout << "cat plays with int " << value;
}
static void play(std::string value)
{
std::cout << "cat plays with string " << value;
}
template <typename Type>
static void play(Type &value)
{
Type::play(value);
}
};
struct Dog
{
static void play(Dog &value)
{
std::cout << "cat plays with dog";
}
};
int main() {
// your code goes here
Cat cat;
Dog dog;
//cat.play(1);
cat.play(dog);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IENhdAp7CglzdGF0aWMgdm9pZCBwbGF5KGludCB2YWx1ZSkKCXsKCQlzdGQ6OmNvdXQgPDwgImNhdCBwbGF5cyB3aXRoIGludCAiIDw8IHZhbHVlOwoJfQoKCXN0YXRpYyB2b2lkIHBsYXkoc3RkOjpzdHJpbmcgdmFsdWUpCgl7CgkJc3RkOjpjb3V0IDw8ICJjYXQgcGxheXMgd2l0aCBzdHJpbmcgIiA8PCB2YWx1ZTsKCX0KCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KCXN0YXRpYyB2b2lkIHBsYXkoVHlwZSAmdmFsdWUpCgl7CgkJVHlwZTo6cGxheSh2YWx1ZSk7Cgl9Cn07CgoKc3RydWN0IERvZwp7CglzdGF0aWMgdm9pZCBwbGF5KERvZyAmdmFsdWUpCgl7CgkJc3RkOjpjb3V0IDw8ICJjYXQgcGxheXMgd2l0aCBkb2ciOwoJfQp9OwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglDYXQgY2F0OwoJRG9nIGRvZzsKCS8vY2F0LnBsYXkoMSk7CgljYXQucGxheShkb2cpOwoJcmV0dXJuIDA7Cn0=