#include <iostream>
template <typename T> struct Foo {
void CallBar () {
Bar();
}
virtual void Bar() = 0;
};
struct Baz : public Foo<int> {
void Bar () {
std::cout << "Bars everywhere, bitches.\n";
}
};
int main (int argc, char* argv[]) {
Baz baz;
baz.CallBar();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBGb28gewogICAgCiAgICB2b2lkIENhbGxCYXIgKCkgewogICAgICAgIEJhcigpOwogICAgfQogICAgdmlydHVhbCB2b2lkIEJhcigpID0gMDsKfTsKCnN0cnVjdCBCYXogOiBwdWJsaWMgRm9vPGludD4gewogICAgCiAgICB2b2lkIEJhciAoKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJCYXJzIGV2ZXJ5d2hlcmUsIGJpdGNoZXMuXG4iOwogICAgfQogICAgCn07CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgCiAgICBCYXogYmF6OwogICAgYmF6LkNhbGxCYXIoKTsKICAgIAp9