#include <iostream>
struct widget
{
struct bar { explicit bar(int) { std::cout << "constructor\n"; } };
void bar(int) { std::cout << "function\n"; }
};
template<class B>
struct gadget : B
{
void a() { typename B::bar(10); }
void b() { B::bar(10); }
};
int main()
{
gadget<widget> x;
x.a();
x.b();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IHdpZGdldAp7CglzdHJ1Y3QgYmFyIHsgZXhwbGljaXQgYmFyKGludCkgeyBzdGQ6OmNvdXQgPDwgImNvbnN0cnVjdG9yXG4iOyB9IH07CgoJdm9pZCBiYXIoaW50KSB7IHN0ZDo6Y291dCA8PCAiZnVuY3Rpb25cbiI7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIEI+CnN0cnVjdCBnYWRnZXQgOiBCCnsKCXZvaWQgYSgpIHsgdHlwZW5hbWUgQjo6YmFyKDEwKTsgfQoJdm9pZCBiKCkgeyBCOjpiYXIoMTApOyB9Cn07CgppbnQgbWFpbigpCnsKCWdhZGdldDx3aWRnZXQ+IHg7Cgl4LmEoKTsKCXguYigpOwp9