При использовании лямбда-функций, допустим, вы решили скопировать переменную (с обозначением [=]). Если вы больше никогда не ссылаетесь на эту переменную, может ли компилятор переместить ее в результирующий объект функции?
Изменить: Например, я написал фрагмент кода для перемещения вызовов между потоками. Вот пример, который делает это.
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);
});
}
Но ясно, что файловая переменная не должна существовать после определения лямбда - и действительно, лямбда вызывается только один раз, поэтому я переместил копию.