Annex D (normative) Compatibility features [depr]

D.11 Temporary buffers [depr.temporary.buffer]

В шапку внесены следующие дополнения:<memory>

namespace std {
  template <class T>
    pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept;
  template <class T>
    void return_temporary_buffer(T* p);
}

template <class T> pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept;

Effects: Получает указатель на неинициализированное непрерывное хранилище для N смежных объектов типа Tдля некоторого неотрицательного числа N. Поддерживаются ли избыточно выровненные типы, зависит от реализации ([basic.align]).

Remarks: Вызов get_­temporary_­buffer с положительным числом n - это необязательный запрос на возврат хранилища для n объектов типа T. В этом случае реализации разрешается вместо этого возвращать хранилище для неотрицательного числа N таких объектов, где N != n (включая N == 0). [ Note: Запрос не является обязывающим, чтобы предоставить свободу для оптимизации управления памятью в зависимости от реализации. ] end note

Returns: Если n <= 0 или если не удалось получить хранилище, возвращает пару P , которая P.first является значением нулевого указателя и P.second == 0; в противном случае возвращает пару P , которая P.first ссылается на адрес неинициализированного хранилища и P.second ссылается на его емкость N (в единицах sizeof(T)).

template <class T> void return_temporary_buffer(T* p);

Effects: Освобождает хранилище, на которое ссылается p.

Requires: p должен быть значением указателя, возвращенным более ранним вызовом get_­temporary_­buffer , который не был признан недействительным в результате промежуточного вызова return_­temporary_­buffer(T*).

Throws: Ничего такого.