В обоих случаях объект создается и разрушается, когда он выходит из области видимости.
В первом случае создается именованный объект ta
, который выходит из области видимости при ближайшем закрытии }
достигнуто.
Во втором случае создается неназванный временный объект, который выходит из области видимости при достижении завершающего ;
в конце оператора.То же самое верно для любого временного объекта, созданного в том же операторе.Например:
doSomething(T1(), T2(), T3());
Это создает 3 временных объекта, которые все остаются в области действия до тех пор, пока не будет достигнут терминатор ;
.