Alignment manipulation

Aligned memory allocator

template<class T, size_t Align>
class aligned_allocator

Allocator for aligned memory.

The aligned_allocator class template is an allocator that performs memory allocation aligned by the specified value.

Template Parameters:
  • T – type of objects to allocate.

  • Align – alignment in bytes.

Public Functions

XSIMD_INLINE aligned_allocator() noexcept

Default constructor.

XSIMD_INLINE aligned_allocator(const aligned_allocator &rhs) noexcept

Copy constructor.

XSIMD_INLINE ~aligned_allocator()

Destructor.

XSIMD_INLINE pointer address (reference) noexcept

Returns the actual address of r even in presence of overloaded operator&.

Parameters:

r – the object to acquire address of.

Returns:

the actual address of r.

XSIMD_INLINE const_pointer address (const_reference) const noexcept

Returns the actual address of r even in presence of overloaded operator&.

Parameters:

r – the object to acquire address of.

Returns:

the actual address of r.

XSIMD_INLINE pointer allocate (size_type n, const void *hint=0)

Allocates n * sizeof(T) bytes of uninitialized memory, aligned by A.

The alignment may require some extra memory allocation.

Parameters:
  • n – the number of objects to allocate storage for.

  • hint – unused parameter provided for standard compliance.

Returns:

a pointer to the first byte of a memory block suitably aligned and sufficient to hold an array of n objects of type T.

XSIMD_INLINE void deallocate (pointer p, size_type n)

Deallocates the storage referenced by the pointer p, which must be a pointer obtained by an earlier call to allocate().

The argument n must be equal to the first argument of the call to allocate() that originally produced p; otherwise, the behavior is undefined.

Parameters:
XSIMD_INLINE size_type max_size () const noexcept

Returns the maximum theoretically possible value of n, for which the call allocate(n, 0) could succeed.

Returns:

the maximum supported allocated size.

XSIMD_INLINE size_type size_max () const noexcept

This method is deprecated, use max_size() instead.

template<class U, class... Args> XSIMD_INLINE void construct (U *p, Args &&... args)

Constructs an object of type T in allocated uninitialized memory pointed to by p, using placement-new.

Parameters:
  • p – pointer to allocated uninitialized memory.

  • args – the constructor arguments to use.

template<class U> XSIMD_INLINE void destroy (U *p)

Calls the destructor of the object pointed to by p.

Parameters:

p – pointer to the object that is going to be destroyed.

template<class U>
XSIMD_INLINE aligned_allocator(const aligned_allocator<U, A>&) noexcept

Extended copy constructor.

template<class U>
struct rebind

Alignement checker

Warning

doxygenfunction: Unable to resolve function “xsimd::is_aligned” with arguments “None”. Candidate function could not be parsed. Parsing error is Error when parsing function declaration. If the function has no return type: Error in declarator or parameters-and-qualifiers Invalid C++ declaration: Expecting “(” in parameters-and-qualifiers. [error at 49] template<class Arch = default_arch> XSIMD_INLINE bool is_aligned (void const *ptr) ————————————————-^ If the function has a return type: Error in declarator or parameters-and-qualifiers If pointer to member declarator: Invalid C++ declaration: Expected identifier in nested name, got keyword: bool [error at 53] template<class Arch = default_arch> XSIMD_INLINE bool is_aligned (void const *ptr) —————————————————–^ If declarator-id: Invalid C++ declaration: Expected identifier in nested name, got keyword: bool [error at 53] template<class Arch = default_arch> XSIMD_INLINE bool is_aligned (void const *ptr) —————————————————–^