Вы можете обрабатывать лямбда-захваты, как обычные экземпляры структуры.
В вашем случае:
struct lambda_UUID_HERE_stuff
{
std::vector<std::function<void()>> &vec;
something_unmovable m;
void operator()()
{
this->vec.resize(100);
}
};
... и я считаю, что применяются все те же правила (что касается VS2013 )
Итак, это, по-видимому, еще один случай неопределенного поведения. То есть, если &vec
указывает на вектор, содержащий экземпляр захвата, а операции внутри operator()
вызывают изменение этого вектора.