Example
#include <new>
static_assert(64u == std::hardware_destructive_interference_size); // x86-64Puzzle
- **Can you implement
cache_aligned_arrayfunction which returns cache size aligned std::array with provided values?
constexpr auto cache_aligned_array(auto... args) {
// TODO
return std::array{args...};
};
static_assert(std::hardware_destructive_interference_size == alignof(cache_aligned_array(1, 2, 3)));Solutions
constexpr auto cache_aligned_array(auto... args) {
struct alignas(std::hardware_destructive_interference_size)
: decltype(std::array{args...}) { } array {args...};
return array;
};
static_assert(std::hardware_destructive_interference_size == alignof(cache_aligned_array(1, 2, 3)));