std::out_ptr_t<Smart,Pointer,Args...>:: ~out_ptr_t
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
out_ptr_t::~out_ptr_t
|
||||
| Non-member functions | ||||
|
~out_ptr_t
(
)
;
|
(начиная с C++23) | |
Сбрасывает адаптированный
Smart
объект значением модифицированного
Pointer
объекта (или
void
*
объекта, если был вызван
operator
void
**
(
)
) и захваченными аргументами.
Пусть
-
sобозначает адаптированный объектSmart, -
args...обозначает захваченные аргументы, -
pобозначает значение сохраненногоPointer, или static_cast < Pointer > ( * operator void ** ( ) ) если был вызван operator void ** , -
SPявляется- Smart :: pointer , если это валидно и обозначает тип, иначе,
- Smart :: element_type * , если Smart :: element_type валидно и обозначает тип, иначе,
- std:: pointer_traits < Smart > :: element_type * , если std:: pointer_traits < Smart > :: element_type валидно и обозначает тип, иначе,
-
Pointer.
Если s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) является корректным выражением, деструктор выполняет
- if ( p ) s. reset ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) ; ,
в противном случае, если std:: is_constructible_v < Smart, SP, Args... > равно true , деструктор выполняет
- if ( p ) s = Smart ( static_cast < SP > ( p ) , std:: forward < Args > ( args ) ... ) ; ,
в противном случае программа является некорректной.
Примечания
Если
Smart
является специализацией
std::shared_ptr
, реализация может выделять память для нового блока управления при конструировании, чтобы оставить нетривиальные операции деструктору.
Аргументы, захваченные по значению, уничтожаются после сброса.