Re[2]: C++0x lambda
От: _nn_ www.nemerleweb.com
Дата: 18.04.10 11:12
Оценка:
Здравствуйте, remark, Вы писали:

R>Здравствуйте, _nn_, Вы писали:


__>>А так работает, но приходится обворачивать лямбду в std::function.

__>>
__>>auto f1 = [](int x) -> std::function<int(int)> { return [=](int y) { return x + y; }; };
__>>


R>Может что-то типа такого попробовать:

R>
R>auto f1 = [](int x) -> decltype([=](int y) {}) { return [=](int y) { return x + y; }; };

R>


R>


Хороший вопрос получился. Можно ли лямбду в decltype засунуть ?
VC не умеет:
auto f = [](int) { return 1;};
typedef decltype(f) a; // OK


typedef decltype([](int) { return 1; }) aa;

error C3477: a lambda cannot appear in an unevaluated context


P.S.
У кого GCC под рукой есть, проверьте пожалуйста.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.