Introduced as remedy for a long standing sloppiness: Using a `char[]` together with `reinterpret_cast` in storage management helpers bears danger of placing objects with wrong alignment; moreover, there are increasing risks that modern code optimisers miss the ''backdoor access'' and might apply too aggressive rewritings. With C++17, there is a standard conformant way to express such a usage scheme. * `lib::UninitialisedStorage` can now be used in a situation (e.g. as in `ExtentFamily`) where a complete block of storage is allocated once and then subsequently used to plant objects one by one * moreover, I went over the code base and adapted the most relevant usages of ''placement-new into buffer'' to also include the `std::launder()` marker |
||
|---|---|---|
| .. | ||
| extent-family.hpp | ||