Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use decltype and std::function with lambda

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?

like image 392
learnvst Avatar asked Nov 29 '12 18:11

learnvst


1 Answers

... so why doesn't this [work]?

Because each lexical instance of a lambda has a different type. It does not matter if the same characters are used.

.. and how would I declare lambda_t manually using std::function?

The lambda takes an int argument and does not return anything... Therefore:

typedef std::function<void(int)> lambda_t;
like image 127
R. Martinho Fernandes Avatar answered Sep 24 '22 20:09

R. Martinho Fernandes