Код: Выделить всё
for (T &t : some_vector_) {
futures.push_back(thread_pool.submit([&t] { t.do_something(); }));
}
Будет ли 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]
Мобильная версия