История изменений
Исправление utf8nowhere, (текущая версия) :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
::new (ptr) std::map<std::string, std::any>(_params);
// ...
auto after_params = std::launder(reinterpret_cast<<std::string, std::any>*>(ptr));
Исправление utf8nowhere, :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
new (ptr) std::map<std::string, std::any>(_params);
// ...
auto after_params = std::launder(reinterpret_cast<<std::string, std::any>*>(ptr));
Исправление utf8nowhere, :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
new (ptr) std::map<std::string, std::any>*(_params);
// ...
auto after_params = std::launder(reinterpret_cast<<std::string, std::any>**>(ptr));
Исправление utf8nowhere, :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
new (ptr) <std::string, std::any>*(_params);
// ...
auto after_params = std::launder(reinterpret_cast<<std::string, std::any>**>(ptr));
Исправление utf8nowhere, :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
new (ptr) std::map(_params);
// ...
auto after_params = std::launder(reinterpret_cast<std::map*>(ptr));
Исходная версия utf8nowhere, :
std::map это не TriviallyCopyable тип, копировать его memcpy — UB.
Используй placement new:
void* ptr = malloc(sizeof (_params));
auto after_params = new (ptr) std::map(_params);