N. I.:
NI>σ:
σ>>Вопрос ИСКЛЮЧИТЕЛЬНО юридический
NI>Статья 273 УК
σ>>Мне встречалось утверждение что вызов другого конструктора изнутри данного:
σ>>σ>>Klass::Klass(some_params)
σ>>{
σ>> new (this) Klass(other_params);
σ>>}
σ>>
σ>>приводит к UB.
σ>>Это так или нет? И почему?
NI>Похоже на неявное undefined behavior — это когда в стандарте попросту нет описания того, как некая конструкция должна работать.
Я хотел поспорить и сказать, что поведение определено в
http://eel.is/c++draft/basic.life#6 и this можно использовать как указатель на сторадж, но понял, что, оказывается, я проглядел "For an object under construction or destruction, see [class.cdtor]". Т.е. объект может быть не только в двух состояниях: когда лайфтайм ещё не начался (уже закончился) или уже начался (и ещё не закончился), но ещё и в "промежуточном" — under construction/destruction.
В общем, вопроса почему UB больше нет — я просто невнимательно читал параграф стандарта.