This works …
auto x = 4;
typedef decltype(x) x_t;
x_t y = 5;
… so why doesn’t this?
int j = 4;
auto func = [&] (int i) { cout << "Hello: i=" << i << " j=" << j << endl;};
typedef decltype(func) lambda_t;
lambda_t func2 = [&] (int i) { cout << "Bye: i=" << i << " j=" << j << endl;};
… and how would I declare lambda_t manually using std::function?
Because each lexical instance of a lambda has a different type. It does not matter if the same characters are used.
The lambda takes an int argument and does not return anything… Therefore: