LINUX.ORG.RU

История изменений

Исправление 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);