Здравствуйте, so5team, Вы писали:
в функции store_to не должно быть проблем. Могут быть проблемы с функцией read
typename<T>
T& read(my_union_t<T>& src) {
return *(reinterpret_cast<T*>(src._content.data()));
}
struct Data { int i; };
Data data1{1};
my_union_t<Data> storage;
store_to(storage, data1);
std::cout << read(storage).i;
Data data2{2};
store_to(storage, data2);
std::cout << read(storage).i; // тут компилятор может закешировать и вернуть 1
Чтобы избежать этого нужен std::launder. Но если его вызывать при каждом чтении, то компилятор уже ничего оптимизировать не будет, что тоже не очень хорошо.