TGViewer
Библиотека C/C++ разработчика | cpp, boost, qt Библиотека C/C++ разработчика | cpp, boost, qt @cppproglib · 16.9K subscribers
Post #6412 2.76K
🍿 std::start_lifetime_as vs std::launder: в чём разница?

Оба связаны с pointer provenance и strict aliasing, но решают разные проблемы.


🍴 std::launder — обход оптимизаций

Когда компилятор «знает» значение через const member или reference, он может закешировать его:

struct S { const int x; };
S* p = new (addr) S{42};
p->x; // Компилятор: "всегда 42"

new (p) S{100}; // Переиспользуем память
p->x; // Всё ещё 42? Нет, но компилятор так думает!

auto q = std::launder(p);
q->x; // Правильно: 100


launder заставляет компилятор перечитать значение из памяти, игнорируя предыдущие предположения.


🍬 start_lifetime_as — создание lifetime

Он нужен когда объекта физически нет, но память готова:

alignas(int) char buffer[sizeof(int)];
*reinterpret_cast<int*>(buffer) = 42; // UB: нет объекта

int* p = std::start_lifetime_as<int>(buffer);
*p = 42; // OK: объект создан



🏝 Вывод

launder — для существующих объектов с переписанной памятью. start_lifetime_as — для памяти, которая станет объектом.


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#под_капотом
  • 🔥 6
  • ❤ 2
  • 👍 2
  • 👾 1
More from @cppproglib
  1. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  5. Sep 13, 2026🤩 Inline static в классах — забудь про .cpp Сколько раз ты забывал добавить определение s…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →