Spec-Zone.ru › C++

std::out_ptr_t<Smart,Pointer,Args...>::out_ptr_t

explicit out_ptr_t( Smart& sp, Args... args );
(1) (начиная с C++23)
(constexpr начиная с C++26)
out_ptr_t( const out_ptr_t& ) = delete;
(2) (начиная с C++23)
1) Создаёт out_ptr_t.
  • Адаптирует sp так, как если бы он был привязан к члену Smart&, захватывает каждый аргумент t в args так, как если бы инициализировал соответствующий член типа T в Args с помощью std::forward<T>(t), а затем выполняет инициализацию по значению сохранённого Pointer.
  • Затем вычисляет sp.reset(), если выражение корректно; в противном случае вычисляет sp = Smart(), если std::is_default_constructible_v<Smart> — это true. Если обе операции сброса некорректны, программа некорректна.
2) Конструктор копирования явно удалён. out_ptr_t нельзя ни копировать, ни перемещать.

Параметры

sp - объект (обычно интеллектуальный указатель), который необходимо адаптировать
args - аргументы для сброса, которые нужно захватить

Исключения

Может выбрасывать исключения, определяемые реализацией.

Примечания

После создания объект Pointer или void*, на который указывает возвращаемое значение любой из функций преобразования, равен nullptr.

Каждый аргумент в args перемещается в созданный out_ptr_t, если он имеет объектный тип, или передаётся в созданный out_ptr_t без изменений, если он имеет ссылочный тип.

Конструктору out_ptr_t разрешено выбрасывать исключения. Например, если sp является std::shared_ptr, выделение памяти для нового управляющего блока может выполняться в конструкторе, а не в деструкторе.

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/out_ptr_t/out_ptr_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API