use `std::alignment_of<T>::value` instead of `alignof(T)` for MSVC compatibility