TGViewer
Гепардово гнездо Гепардово гнездо @gepardchan · 617 subscribers
Post #89 897
Про std::launder()

Если кто-то утверждает, что хорошо знает C++, то я прошу его объяснить, зачем нужен std::launder() :) Даже если открыть cppreference и почитать, понять это оказывается непросто. А написано там вот что:

> Returns a pointer to the same memory that p points to, but where the referent object is assumed to have a distinct lifetime and dynamic type.
> Formally, given
> - the pointer p represents the address A of a byte in memory
> - an object X is located at the address A
> - ...
> Then std::launder(p) returns a value of type T* that points to the object X.

Из описания может показаться, что это какая-то бесполезная функция: она просто берет и возвращает тот же указатель :) Но на самом деле это не так: она, во-первых, служит барьером для оптимизаций, а, во-вторых, предотвращает возникающие в таком случае UB с точки зрения модели C++.

Почему так? Можно почитать вот в этой замечательной статье:
https://blog.panicsoftware.com/objects-their-lifetimes-and-pointers/
Там же раскрываются и связанные вещи: reinterpret_cast, union'ы, type punning, std::launder, объекты в понимании C++ (это не то же самое, что экземпляры класса из мира ООП!)
  • 🤯 6
  • 👍 4
  • 🔥 1
  • 🤔 1
  • 💩 1
More from @gepardchan
  1. Sep 7, 2025Итак, расскажу о том, что я сделал еще давно, но про что все никак не доходили руки написа…
  2. Dec 10, 2024https://habr.com/ru/post/472970/ Статья 2019 года, то есть довольно старая, с учетом того,…
  3. Nov 30, 2024Сегодня читал про то, как Debian везде перешел на 64-х битный time_t. Изменение войдет в р…
  4. Nov 26, 2024https://www.ryanliptak.com/blog/every-rc-exe-bug-quirk-probably/ Не знаю, как вы, а я прос…
  5. Nov 22, 2024Еще про проклятые фичи баша https://yossarian.net/til/post/some-surprising-code-execution-…
  6. Nov 21, 2024Про переписывание истории В баше (а точнее, в GNU Readline, который используется башом), е…
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 →