Порядок вычисления параметра функции не определен, поэтому вы не можете полагаться на свое предположение.Решение может быть следующим:
Method(std::vector<std::string> vec)
{
auto l = [vec]() { /* Act on vec... */ };
AsyncMethod(std::move(vec), l);
}
В зависимости от подписи AsyncMethod
, вы можете даже передать лямбду как std::move(l)
.Это снова будет безопасно, поскольку вектор был заранее скопирован в замыкание.