On Sat, 21 Jan 2017 22:44:49 +0000, bitwise wrote:
> So I use a custom aligned allocator:
> 
> template <class T, int ALIGN>
> class AlignedAllocator {
>      T* allocate(size_type n) {
>          return (T*)_aligned_malloc(ALIGN, n * sizeof(T));
>      }
> };
> 
> SIMD operations(aligned load and store) can now safely be used on the
> contents of the std::vector<Vec4>.

This is fine when you have fine-grained control of which allocators are 
used for which purpose and you know more about what the code needs than 
whoever is consuming the allocator.

alignedAllocate() is for when the code consuming the allocator knows more 
about alignment needs than whoever is supplying the allocator, which is 
more likely to crop up with coarse-grained allocator control.

Reply via email to