Да, выполнение выравнивания на стеке в данном случае является необходимым. Если размер объекта Entry<K, V> больше 16 байт и его выравнивание равно 128 байт, то при копировании объекта во временный буфер на стеке может произойти неправильное выравнивание. Для избежания этой проблемы можно использовать std::aligned_storage, чтобы создать временное хранилище с правильным выравниванием перед копированием объекта.
Раз вы используете функцию memcpy для копирования, то проблем возникнуть не должно. Кроме того, можете ли вы подтвердить, что std::swap сама применяет такую оптимизацию? Зачем вам изобретать свои методы?
Аргумент в пользу использования memcpy вместо стандартных функций копирования состоит в том, что memcpy более производителен, поскольку выполняет копирование байтов блоками, а не элементами. Однако, применяет ли std::swap такую оптимизацию, и можно ли доверять этой оптимизации?