Что хранит буферный массив?
Код: Выделить всё
alignas(Types...) unsigned char buffer[sizeof(LargestT)];
Код: Выделить всё
#include // for std::launder()
template
class VariantStorage {
using LargestT = LargestType;
// What stores the following buffer array?
alignas(Types...) unsigned char buffer[sizeof(LargestT)];
unsigned char discriminator = 0;
public:
unsigned char getDiscriminator() const {
return discriminator;
}
void setDiscriminator(unsigned char d) {
discriminator = d;
}
void* getRawBuffer() {
return buffer;
}
const void* getRawBuffer() const {
return buffer;
}
template
T* getBufferAs() {
return std::launder(reinterpret_cast(buffer));
}
template
T const* getBufferAs() const {
return std::launder(reinterpret_cast(buffer));
}
};
Подробнее здесь: https://stackoverflow.com/questions/790 ... -array-for