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 overloadedoperator&
.- 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 overloadedoperator&
.- 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 byA
.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 typeT
.
- 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 producedp
; otherwise, the behavior is undefined.- Parameters:
p – pointer obtained from allocate().
n – number of objects earlier passed to allocate().
- 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 byp
, 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) —————————————————–^