Herb Sutter в GotW #91 Solution: Smart Pointer Parameters утверждает: « Благодаря структурированному времени жизни время жизни вызываемой функции является строгим подмножеством выражения вызова вызывающей функции». Это относится к асинхронным вызовам функций?Аргумент времени жизни вызова асинхронной функции
void myFunc(Bar * arg);
...
auto bar = new Bar;
std::thread t1(myFunc,bar);
delete bar;
join t1;
Я полагаю, что в этом случае, удаление бара может привести к аннулированию аргумента, передаваемый в MyFunc на нить t1.
В C++ нет асинхронных вызовов функций. Нити не являются функциями, они являются объектами. –