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*>
{
void doStuff(int* const & foo) {}
};
MyImpl imp1;
MyPtrImpl imp2;
int main() {
}
dGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IE15VGVtcGwKewogICAgdmlydHVhbCB2b2lkIGRvU3R1ZmYoY29uc3QgVCAmdmFsdWUpID0gMDsKfTsKCnN0cnVjdCBNeUltcGwgOiBNeVRlbXBsPGludD4KewogICAgdm9pZCBkb1N0dWZmKGNvbnN0IGludCAmdmFsdWUpIHt9Cn07CgpzdHJ1Y3QgTXlQdHJJbXBsIDogTXlUZW1wbDxpbnQqPgp7CiAgICB2b2lkIGRvU3R1ZmYoaW50KiBjb25zdCAmIGZvbykge30KfTsKCk15SW1wbCBpbXAxOwpNeVB0ckltcGwgaW1wMjsKCgoKaW50IG1haW4oKSB7Cn0=