struct Static
{
};
struct Polymorphic
{
virtual ~Polymorphic(){}
};
template<class Policy>
struct Derived: Policy
{
/* non-optional virtual? */ ~Derived() /* non-optional override? */
{
}
};
int main()
{
Derived<Polymorphic> p;
Derived<Static> s;
}
c3RydWN0IFN0YXRpYwp7Cn07CnN0cnVjdCBQb2x5bW9ycGhpYwp7CiAgICB2aXJ0dWFsIH5Qb2x5bW9ycGhpYygpe30KfTsKCnRlbXBsYXRlPGNsYXNzIFBvbGljeT4Kc3RydWN0IERlcml2ZWQ6IFBvbGljeQp7CiAgICAvKiBub24tb3B0aW9uYWwgdmlydHVhbD8gKi8gfkRlcml2ZWQoKSAvKiBub24tb3B0aW9uYWwgb3ZlcnJpZGU/ICovCiAgICB7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIERlcml2ZWQ8UG9seW1vcnBoaWM+IHA7CiAgICBEZXJpdmVkPFN0YXRpYz4gczsKfQ==