Код:
if constexpr (std::is_trivial_v<Entry<K, V>>)
{
// TODO: Если выравнивание на стеке tmpObj != выравниванию Entry<K, V> ? Применить: std::aligned_storage ?
std::byte tmpObj[sizeof(Entry<K, V>)];
std::memcpy(tmpObj, &buffer[curElemPos], sizeof(Entry<K, V>));
std::memcpy(&buffer[curElemPos], &buffer[parentPos], sizeof(Entry<K, V>));
std::memcpy(&buffer[parentPos], tmpObj, sizeof(Entry<K, V>));
}
else
{
std::swap(buffer[curElemPos], buffer[parentPos]);
}
Прежположим у Entry выравнивание, например, 128. Могут ли быть какие-либо проблемы, не заиспользовав std::aligned_storage ? Вроде бы tmp просто временный объект на стеке и всё ок должно быть