thrust::mr::stateless_resource_allocator

Defined in thrust/mr/allocator.h

template<typename T, typename Upstream>
class stateless_resource_allocator : public thrust::mr::allocator<T, Upstream>

A helper allocator class that uses global instances of a given upstream memory resource. Requires the memory resource to be default constructible.

Template Parameters
  • T – the type that will be allocated by this allocator.

  • Upstream – the upstream memory resource to use for memory allocation. Must derive from thrust::mr::memory_resource and must be final (in C++11 and beyond).

Public Types

using void_pointer = typename MR::pointer

The pointer to void type of this allocator.

using value_type = T

The value type allocated by this allocator. Equivalent to T.

using pointer = typename thrust::detail::pointer_traits<void_pointer>::template rebind<T>::other

The pointer type allocated by this allocator. Equivaled to the pointer type of MR rebound to T.

using const_pointer = typename thrust::detail::pointer_traits<void_pointer>::template rebind<const T>::other

The pointer to const type. Equivalent to a pointer type of MR rebound to const T.

using reference = typename thrust::detail::pointer_traits<pointer>::reference

The reference to the type allocated by this allocator. Supports smart references.

using const_reference = typename thrust::detail::pointer_traits<const_pointer>::reference

The const reference to the type allocated by this allocator. Supports smart references.

using size_type = std::size_t

The size type of this allocator. Always std::size_t.

using difference_type = typename thrust::detail::pointer_traits<pointer>::difference_type

The difference type between pointers allocated by this allocator.

using propagate_on_container_copy_assignment = detail::true_type

Specifies that the allocator shall be propagated on container copy assignment.

using propagate_on_container_move_assignment = detail::true_type

Specifies that the allocator shall be propagated on container move assignment.

using propagate_on_container_swap = detail::true_type

Specifies that the allocator shall be propagated on container swap.

Public Functions

inline stateless_resource_allocator()

Default constructor. Uses get_global_resource to get the global instance of Upstream and initializes the allocator base subobject with that resource.

inline stateless_resource_allocator(const stateless_resource_allocator &other)

Copy constructor. Copies the memory resource pointer.

template<typename U>
inline stateless_resource_allocator(const stateless_resource_allocator<U, Upstream> &other)

Conversion constructor from an allocator of a different type. Copies the memory resource pointer.

stateless_resource_allocator &operator=(const stateless_resource_allocator&) = default
inline ~stateless_resource_allocator()

Destructor.

inline size_type max_size() const

Calculates the maximum number of elements allocated by this allocator.

Returns

the maximum value of std::size_t, divided by the size of T.

inline pointer allocate(size_type n)

Allocates objects of type T.

Parameters

n – number of elements to allocate

Returns

a pointer to the newly allocated storage.

inline void deallocate(pointer p, size_type n) noexcept

Deallocates objects of type T.

Parameters
  • p – pointer returned by a previous call to allocate

  • n – number of elements, passed as an argument to the allocate call that produced p

inline Upstream *resource() const

Extracts the memory resource used by this allocator.

Returns

the memory resource used by this allocator.

template<typename U>
struct rebind

The rebind metafunction provides the type of an stateless_resource_allocator instantiated with another type.

Template Parameters

U – the other type to use for instantiation.

Public Types

using other = stateless_resource_allocator<U, Upstream>

The alias other gives the type of the rebound stateless_resource_allocator.