5 questions
4
votes
2
answers
266
views
Using std::launder with reinterpret_cast?
I am probably familiar with strict aliasing rule and implicit lifetime creation in a certain degree, but I still do not understand well enough how do these terms relate to std::launder.
The following ...
2
votes
0
answers
170
views
Accessing objects of implicit lifetime type in the storage provided by std::allocator, before any explicit construction
This question rises for a discussion of the answer to another question about allocation in constexpr context.
cppreference states that std::allocator<T>::allocate(std::size_t n) allocates an ...
5
votes
1
answer
187
views
Why are [[no_unique_address]] members not transparently replaceable?
In the classic talk An (In-)Complete Guide to C++ Object Lifetimes by Jonathan Müller, there is a useful guideline as follows:
Q: When do I need to use std::launder?
A: When you want to re-use the ...
1
vote
2
answers
212
views
Searching for clarity about C++20 strict aliasing in a custom allocator for implicit lifetime types
Let's say I have an allocator which gives out entire cachelines per request.
So each allocation will begin on a new cacheline.
constexpr auto L1 = std::hardware_destructive_interference_size;
std::...
8
votes
1
answer
393
views
An aggregate is implicit lifetime? Doesn't seem right
According to this and this an aggregate is implicit lifetime.
A class S is an implicit-lifetime class if it is an aggregate or has at least one trivial eligible constructor and a trivial, non-deleted ...