#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);
}