Передача локальной ссылки на замыканиеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Передача локальной ссылки на замыкание

Сообщение Anonymous »

Рассмотрим приведенный ниже код:
for (T &t : some_vector_) {
futures.push_back(thread_pool.submit([&t] { t.do_something(); }));
}

На некоторой итерации i, t инициализируется ссылкой на элемент вектора, а затем t передается по ссылке на замыкание. На следующей итерации i + 1 t повторно инициализируется новым значением.
Будет ли t в замыкании из итерации i перезаписано в итерации i + 1? Является ли приведенный выше код неправильным?

Обновление: Я написал приведенную ниже программу, чтобы проверить это:
#include
#include
#include

int main(int argc, char *argv[]) {
std::vector some_vector = {0, 1, 2, 3, 4, 5};
std::vector lambdas;
for (int &t : some_vector) {
lambdas.push_back([&t] { std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... -a-closure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»