monotonic_resource::monotonic_resource

Constructor.

Synopsis

monotonic_resource(
    unsigned char* buffer,
    std::size_t size,
    storage_ptr upstream = {}) noexcept; (1)

monotonic_resource(
    std::byte* buffer,
    std::size_t size,
    storage_ptr upstream) noexcept; (2)

template<
    std::size_t N>
explicit
monotonic_resource(
    unsigned char (&buffer) [N],
    storage_ptr upstream = {}) noexcept; (3)

template<
    std::size_t N>
explicit
monotonic_resource(
    std::byte (&buffer) [N],
    storage_ptr upstream = {}) noexcept; (4)

explicit
monotonic_resource(
    std::size_t initial_size = 1024,
    storage_ptr upstream = {}) noexcept; (5)

monotonic_resource(
    monotonic_resource const&) = delete; (6)

Description

This constructs the resource and indicates that subsequent allocations should use the specified caller-owned buffer. When this buffer is exhausted, dynamic allocations from the upstream resource are made.

This constructor is guaranteed not to perform any dynamic allocations.

Complexity

Constant.

Exception Safety

No-throw guarantee.

Parameters

Name Description

buffer

The buffer to use. Ownership is not transferred; the caller is responsible for ensuring that the lifetime of the buffer extends until the resource is destroyed.

size

The number of valid bytes pointed to by buffer.

upstream

An optional upstream memory resource to use for performing internal dynamic allocations. If this parameter is omitted, the default resource is used.

initial_size

The size of the first internal dynamic allocation. If this is lower than the implementation-defined lower limit, then the lower limit is used instead.