#include <iostream>
using namespace std;
struct A
{
void operator() () { cout << "A()\n"; }
};
struct B
{
void operator() (int x) { cout << "B(" << x << ")\n"; }
};
template<class... Bs>
struct C : Bs...
{
using Bs::operator()...;
};
int main()
{
C<A, B> c;
c();
c(42);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKeyAKCXZvaWQgb3BlcmF0b3IoKSAoKSB7IGNvdXQgPDwgIkEoKVxuIjsgfQp9OwoKc3RydWN0IEIKewoJdm9pZCBvcGVyYXRvcigpIChpbnQgeCkgeyBjb3V0IDw8ICJCKCIgPDwgeCA8PCAiKVxuIjsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MuLi4gQnM+CnN0cnVjdCBDIDogQnMuLi4KewoJdXNpbmcgQnM6Om9wZXJhdG9yKCkuLi47Cn07CgppbnQgbWFpbigpIAp7CglDPEEsIEI+IGM7CgljKCk7CgljKDQyKTsKfQ==