template<typename T>
struct MyTempl
{
virtual void doStuff(const T &value) = 0;
};
struct MyImpl : MyTempl<int>
{
void doStuff(const int &value) {}
};
struct MyPtrImpl : MyTempl<int*>
{
typedef int *T;
void doStuff(const T & foo) {}
};
MyImpl imp1;
MyPtrImpl imp2;
int main() {
}
dGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IE15VGVtcGwKewogICAgdmlydHVhbCB2b2lkIGRvU3R1ZmYoY29uc3QgVCAmdmFsdWUpID0gMDsKfTsKCnN0cnVjdCBNeUltcGwgOiBNeVRlbXBsPGludD4KewogICAgdm9pZCBkb1N0dWZmKGNvbnN0IGludCAmdmFsdWUpIHt9Cn07CgpzdHJ1Y3QgTXlQdHJJbXBsIDogTXlUZW1wbDxpbnQqPgp7Cgl0eXBlZGVmIGludCAqVDsKICAgIHZvaWQgZG9TdHVmZihjb25zdCBUICYgZm9vKSB7fQp9OwoKTXlJbXBsIGltcDE7Ck15UHRySW1wbCBpbXAyOwoKCgppbnQgbWFpbigpIHsKfQ==