« first day    last day (16 days later) » 

7:10 PM
@ixSci, Похоже, что неопределённое поведение строк кода f(); и pb->f();, которые присутствуют в примере из пункта 6.6.3/6 обусловлено причинами, описанными в пункте 6.6.3/8.
После того, как в функции mutate на месте объекта типа D1 был создан объект типа D2, все указатели и ссылки, которые указывали / ссылались на исходный объект теперь указывают / ссылаются на новый объект. Однако, использовать их для манипулирования новым объектом можно только в том случае, если новый объект имеет тот же самый тип, что и исходный.
Если в mutate написать так: B *p = new (this) D2; p->f();, то это похоже корректный код.
@VladD, @Qwertiy, @selya
 
 
3 hours later…
10:21 PM
@wololo звучит вполне логично...
 
11:15 PM
@wololo Угу, вот это похоже на правду.
 
11:35 PM
@wololo но при обращении через pb тип верный же?
@VladD что-то не очень... где там вопрос?
 

« first day    last day (16 days later) »