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