#include <iostream>

struct T1 {
T1 operator()(int x) { return T1(x); }
int operator=(int x) { return x; }
T1(int) {}
};

struct T2 {
T2(int) {}
};

int a, (*(*b)(T2))(int), c, d, e;
void f()
{
T1(a) = 3;
T2(4);

//std::cout << a << std::endl;

e = (*(*b)(T2(c)))(int(d));
}

int main()
{
f();
}