Текущий стандарт С++ 11 не поддерживает перемещение захвата переменной в лямбда-выражении, например
unique_ptr<int[]> msg(new int[1000000]);
async_op([&&msg] { // compile error : move capture is not supported
/* do something */
});
Поскольку передача сообщений и уникальное право собственности играют определенную роль в каком-то асинхронном проектировании системы, я думаю, что перемещение семантики следует рассматривать как семантику семантики первого класса. Но lambda не поддерживает захват перемещения.
Конечно, я знаю, что есть некоторый обходной путь с использованием прокси-сервера перемещения, но мне интересно причина решения о том, что эта функциональность не будет включена в стандарт С++ 11, несмотря на ее важность.