Namespaces
Variants

std::experimental:: unique_resource

From cppreference.net
헤더 파일에 정의됨 <experimental/scope>
template < class R, class D >
class unique_resource ;
(라이브러리 fundamentals TS v3)

unique_resource 는 핸들을 통해 리소스를 소유하고 관리하며, unique_resource 가 소멸될 때 해당 리소스를 처분하는 범용 RAII 래퍼입니다.

리소스는 다음 중 하나가 발생할 때 D 타입의 삭제자를 사용하여 해제됩니다:

  • 관리 중인 unique_resource 객체가 소멸될 때,
  • 관리 중인 unique_resource 객체가 operator= 또는 reset() 을 통해 다른 리소스로부터 할당될 때.

타입 RS R 이 객체 타입인 경우 R 로, 그렇지 않은 경우 std:: reference_wrapper < std:: remove_reference_t < R >> 로 정의합니다:

  • unique_resource 는 리소스 핸들을 보유하거나 감싸는 RS 타입의 하위 객체, D 타입의 삭제자, 그리고 래퍼가 리소스를 소유하는지 여부를 나타내는 bool 플래그를 효과적으로 보유합니다.
  • 설명 목적으로, RS 타입의 하위 객체는 저장된 리소스 핸들 이라고 부르며, 저장된 ( R 이 객체 타입인 경우) 또는 감싸진 ( R 이 참조 타입인 경우) R 기본 리소스 핸들 이라고 부릅니다. 이 두 용어는 LFTS에서 사용되지 않습니다.

목차

템플릿 매개변수

R - 리소스 핸들 타입
D - 삭제자 타입
타입 요구사항
-
R 은 객체 타입이거나 객체 타입에 대한 lvalue 참조여야 합니다. UnrefR std:: remove_reference_t < R > 라고 할 때, UnrefR MoveConstructible 이어야 하며, UnrefR CopyConstructible 이 아닌 경우 std:: is_nothrow_move_constructible_v < UnrefR > true 이어야 합니다.
-
D Destructible 이고 MoveConstructible FunctionObject 타입이어야 하며, D CopyConstructible 이 아닌 경우 std:: is_nothrow_move_constructible_v < D > true 이어야 합니다. D 타입의 lvalue d UnrefR 타입의 lvalue r 이 주어졌을 때, 표현식 d ( r ) 은 형식이 올바르게 구성되어야 합니다.

멤버 함수

새로운 unique_resource 를 생성합니다
(public member function)
관리되는 리소스가 존재할 경우 이를 처리합니다
(public member function)
unique_resource 를 할당합니다
(public member function)
Modifiers
소유권을 해제합니다
(public member function)
관리되는 리소스를 처리하거나 교체합니다
(public member function)
Observers
기본 리소스 핸들에 접근합니다
(public member function)
관리되는 리소스를 처리하는 데 사용되는 deleter에 접근합니다
(public member function)
리소스 핸들이 포인터인 경우 포인티에 접근합니다
(public member function)

비멤버 함수

유효하지 않은 값을 검사하여 unique_resource 를 생성합니다
(함수 템플릿)

추론 가이드

참고 사항

NullablePointer 요구 사항을 만족하는 리소스 핸들 타입들도 std::unique_ptr 에 의해 관리될 수 있습니다. unique_ptr 과 달리, unique_resource NullablePointer 를 요구하지 않습니다.

예제

참고 항목

(C++11)
고유 객체 소유권 의미론을 가진 스마트 포인터
(클래스 템플릿)