#include <iostream>
using namespace std;
class B {
public:
virtual const void func() = 0;
};
template <typename T>
class TB : public B {
public:
virtual const void func() = 0;
};
class D : public TB<double> {
public:
const void func() {
}
};
int main() {
D *pd = nullptr;
B *pbd = dynamic_cast<B*>(pd);
B *pbc = static_cast<B*>(pd);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQiB7CnB1YmxpYzoKCXZpcnR1YWwgY29uc3Qgdm9pZCBmdW5jKCkgPSAwOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFRCIDogcHVibGljIEIgewpwdWJsaWM6Cgl2aXJ0dWFsIGNvbnN0IHZvaWQgZnVuYygpID0gMDsKfTsKCmNsYXNzIEQgOiBwdWJsaWMgVEI8ZG91YmxlPiB7CnB1YmxpYzoKICAgY29uc3Qgdm9pZCBmdW5jKCkgewogICB9Cn07CgppbnQgbWFpbigpIHsKCQoJRCAqcGQgPSBudWxscHRyOwoJQiAqcGJkID0gZHluYW1pY19jYXN0PEIqPihwZCk7CglCICpwYmMgPSBzdGF0aWNfY2FzdDxCKj4ocGQpOwoJcmV0dXJuIDA7Cn0=