#include <iostream>
class C1 {};
class C2 {};
void handleSpecial(C1& c1)
{
std::cout << "Handling C1\n";
}
void handleSpecial(C2& c2)
{
std::cout << "Handling C2\n";
}
template <typename T> void handle(T& content)
{
std::cout << "Doing generell stuff\n";
handleSpecial(content);
}
int main(int argc, char* argv[])
{
C1 c1;
handle(c1);
C2 c2;
handle(c2);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQzEge307CmNsYXNzIEMyIHt9OwoKdm9pZCBoYW5kbGVTcGVjaWFsKEMxJiBjMSkKewoJc3RkOjpjb3V0IDw8ICJIYW5kbGluZyBDMVxuIjsKfQp2b2lkIGhhbmRsZVNwZWNpYWwoQzImIGMyKQp7CglzdGQ6OmNvdXQgPDwgIkhhbmRsaW5nIEMyXG4iOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBoYW5kbGUoVCYgY29udGVudCkKewoJc3RkOjpjb3V0IDw8ICJEb2luZyBnZW5lcmVsbCBzdHVmZlxuIjsKCWhhbmRsZVNwZWNpYWwoY29udGVudCk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKCUMxIGMxOwoJaGFuZGxlKGMxKTsKCUMyIGMyOwoJaGFuZGxlKGMyKTsKfQo=