Update memory.h

This commit is contained in:
blueloveTH 2023-02-05 04:17:40 +08:00
parent f503484daa
commit c2c7630320

View File

@ -69,7 +69,8 @@ namespace pkpy{
template <typename T, typename U, typename... Args>
shared_ptr<T> make_shared(Args&&... args) {
static_assert(std::is_base_of<T, U>::value, "U must be derived from T");
static_assert(std::is_base_of_v<T, U>, "U must be derived from T");
static_assert(std::has_virtual_destructor_v<T>, "T must have virtual destructor");
int* p = (int*)malloc(sizeof(int) + sizeof(U));
*p = 1;
new(p+1) U(std::forward<Args>(args)...);