Перемещение с лямбда-выражениями

При использовании лямбда-функций, допустим, вы решили скопировать переменную (с обозначением [=]). Если вы больше никогда не ссылаетесь на эту переменную, может ли компилятор переместить ее в результирующий объект функции?

Изменить: Например, я написал фрагмент кода для перемещения вызовов между потоками. Вот пример, который делает это.

extern "C" __declspec(dllexport) void parser_file_updated(Parser* p, const char* filename, int offset, int added) {
     std::string file(filename);
     p->make_call([=]() {
         p->file_updated(std::move(file), offset, added);
     });
}

Но ясно, что файловая переменная не должна существовать после определения лямбда - и действительно, лямбда вызывается только один раз, поэтому я переместил копию.

16
задан Puppy 13 December 2010 в 20:31
поделиться