Здравствуйте, σ, Вы писали:
σ>[/ccode]Хочешь сказать, что это:
R> Во-первых, деструктор формально есть у любого типа данных, даже у int. И его даже можно явно позвать: http://coliru.stacked-crooked.com/a/8360b8eef0155e2c. Просто деструктор такая хитрая штука, что он может быть определен пользователем, а может быть сгенерирован компилятором. Деструктор может быть тривиальным и нетривиальным. Но он есть всегда. И время жизни объекта, согласно стандарту, закачивается, ПРИ ВХОДЕ, в деструктор (даже если он формальный — в этом случае просто где вход, там и выход).
σ>не про то, что у int формально существует тривиальный сгенерированный компилятором деструктор при вызове которого заканчивается время жизни объекта типа int?
Хочу сказать, что "формально есть" следует понимать, как "можно написать выражение". Или тебя удивляет, что я не цитирую стандарт по памяти слово в слово?
Ну а то, что после выполнения выражения i.~Int() время жизни i продолжается, для меня новость, признаюсь честно. Спасибо, конечно, но в данном случае это никак не влияет на выводы, поскольку рассматривается время жизни объекта типа IntWrapper, для которого все сказанное мной остается в силе.