remove std::construct_at and std::destroy_at usage

This commit is contained in:
BlackMATov
2022-01-26 18:22:51 +07:00
parent 8d6a8e7789
commit aa362ab556

View File

@@ -78,7 +78,7 @@ namespace meta_hpp
if constexpr ( in_buffer ) { if constexpr ( in_buffer ) {
dst.storage_.emplace<buffer_t>(); dst.storage_.emplace<buffer_t>();
std::construct_at(storage_cast<Tp>(dst.storage_), std::forward<T>(val)); ::new (storage_cast<Tp>(dst.storage_)) Tp(std::forward<T>(val));
} else { } else {
dst.storage_.emplace<void*>(std::make_unique<Tp>(std::forward<T>(val)).release()); dst.storage_.emplace<void*>(std::make_unique<Tp>(std::forward<T>(val)).release());
} }
@@ -132,9 +132,9 @@ namespace meta_hpp
to.storage_.emplace<void*>(src); to.storage_.emplace<void*>(src);
}, },
[&to](buffer_t& buffer) { [&to](buffer_t& buffer) {
to.storage_.emplace<buffer_t>(); Tp* src = storage_cast<Tp>(buffer);
std::construct_at(storage_cast<Tp>(to.storage_), std::move(*storage_cast<Tp>(buffer))); ::new (&to.storage_.emplace<buffer_t>()) Tp(std::move(*src));
std::destroy_at(storage_cast<Tp>(buffer)); src->~Tp();
}, },
[](...){} [](...){}
}, from.storage_); }, from.storage_);
@@ -150,8 +150,8 @@ namespace meta_hpp
to.storage_.emplace<void*>(new Tp{*src}); to.storage_.emplace<void*>(new Tp{*src});
}, },
[&to](const buffer_t& buffer) { [&to](const buffer_t& buffer) {
to.storage_.emplace<buffer_t>(); const Tp* src = storage_cast<Tp>(buffer);
std::construct_at(storage_cast<Tp>(to.storage_), *storage_cast<Tp>(buffer)); ::new (&to.storage_.emplace<buffer_t>()) Tp(*src);
}, },
[](...){} [](...){}
}, from.storage_); }, from.storage_);
@@ -166,7 +166,7 @@ namespace meta_hpp
std::unique_ptr<Tp>{src}.reset(); std::unique_ptr<Tp>{src}.reset();
}, },
[](buffer_t& buffer) { [](buffer_t& buffer) {
std::destroy_at(storage_cast<Tp>(buffer)); storage_cast<Tp>(buffer)->~Tp();
}, },
[](...){} [](...){}
}, self.storage_); }, self.storage_);