В шапке есть следующее дополнение:<memory>
namespace std { template <class OutputIterator, class T> class raw_storage_iterator { public: using iterator_category = output_iterator_tag; using value_type = void; using difference_type = void; using pointer = void; using reference = void; explicit raw_storage_iterator(OutputIterator x); raw_storage_iterator& operator*(); raw_storage_iterator& operator=(const T& element); raw_storage_iterator& operator=(T&& element); raw_storage_iterator& operator++(); raw_storage_iterator operator++(int); OutputIterator base() const; }; }
raw_storage_iterator предоставляется для того, чтобы алгоритмы могли сохранять свои результаты в неинициализированной памяти. Параметр шаблона OutputIterator должен operator* возвращать объект, для которого operator& определен и возвращает указатель T, а также требуется для удовлетворения требований output iterator.
explicit raw_storage_iterator(OutputIterator x);
Effects: Инициализирует итератор так, чтобы он указывал на то же значение, на которое x указывает.
raw_storage_iterator& operator*();
raw_storage_iterator& operator=(const T& element);
raw_storage_iterator& operator=(T&& element);
raw_storage_iterator& operator++();
Effects: Предварительное приращение: продвигает итератор вперед и возвращает ссылку на обновленный итератор.
raw_storage_iterator operator++(int);
OutputIterator base() const;