Передача локальной ссылки на замыкание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 

Подробнее здесь: [url]https://stackoverflow.com/questions/79851016/passing-a-local-reference-to-a-closure[/url]
Ответить

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

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

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

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

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