ranges_destroy_at
ranges_destroy_at (ranges::destroy_at)
<memory> 헤더에 정의되어 있어요. 주어진 포인터가 가리키는 객체의 소멸자를 호출해요. std::destroy_at의 ranges 버전(니블로이드, niebloid)이에요. C++20부터 도입됐어요.
출처: cppreference
본문
호출 시그니처:
template< std::destructible T >
constexpr void destroy_at( T* p ) noexcept;
(C++20부터)
T가 배열 타입이 아니면 p가 가리키는 객체의 소멸자를 p->~T()로 호출해요. 그렇지 않으면 *p의 요소들을 순서대로 std::destroy(std::begin(*p), std::end(*p))를 호출하는 것처럼 재귀적으로 파괴해요.
이 페이지에 설명된 함수 같은 개체들은 알고리즘 함수 객체(니블로이드)라서, 명시적 템플릿 인자 목록을 쓸 수 없고(함수 호출 시점에 추론), 인자 연관 탐색으로 찾을 수 있어요.
매개변수
p: 파괴할 객체에 대한 포인터
반환값
없음.
S* s = ::new (storage) S();
std::ranges::destroy_at(s); // s->~S() 호출