#include <iostream>
template<class T>
class MyClass{
public:
inline MyClass(const T &t);
template<class C>
void MyUberFunction(const C &c)
{
std::cout<<"My t: "<<m_t<<std::endl;
std::cout<<"Do uber things with: "<<&c<<std::endl;
}
private:
T m_t;
};
template<class T>
MyClass<T>::MyClass(const T &t):
m_t(t)
{
}
int main(int argc, char *argv[])
{
MyClass<int> myInstance(1337);
myInstance.MyUberFunction("Another type");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgTXlDbGFzc3sKICAgIHB1YmxpYzoKICAgICAgICBpbmxpbmUgTXlDbGFzcyhjb25zdCBUICZ0KTsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBDPgogICAgICAgIHZvaWQgTXlVYmVyRnVuY3Rpb24oY29uc3QgQyAmYykKICAgICAgICB7CiAgICAgICAgICAgIHN0ZDo6Y291dDw8Ik15IHQ6ICI8PG1fdDw8c3RkOjplbmRsOwogICAgICAgICAgICBzdGQ6OmNvdXQ8PCJEbyB1YmVyIHRoaW5ncyB3aXRoOiAiPDwmYzw8c3RkOjplbmRsOwogICAgICAgIH0KICAgIHByaXZhdGU6CiAgICAgICAgVCBtX3Q7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpNeUNsYXNzPFQ+OjpNeUNsYXNzKGNvbnN0IFQgJnQpOgogICAgbV90KHQpCnsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgTXlDbGFzczxpbnQ+IG15SW5zdGFuY2UoMTMzNyk7CiAgICBteUluc3RhbmNlLk15VWJlckZ1bmN0aW9uKCJBbm90aGVyIHR5cGUiKTsKCiAgICByZXR1cm4gMDsKfQ==