std::experimental:: unique_resource
|
헤더 파일에 정의됨
<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)
|
고유 객체 소유권 의미론을 가진 스마트 포인터
(클래스 템플릿) |