std::experimental:: make_unique_resource_checked
|
헤더 파일에 정의됨
<experimental/scope>
|
||
|
template
<
class
R,
class
D,
class
S
=
std::
decay_t
<
R
>
>
std
::
experimental
::
unique_resource
<
std::
decay_t
<
R
>
,
std::
decay_t
<
D
>>
|
(라이브러리 펀더멘털 TS v3) | |
unique_resource
를 생성하고, 저장된 리소스 핸들을
std::
forward
<
R
>
(
r
)
로 초기화하며, 딜리터를
std::
forward
<
D
>
(
d
)
로 초기화합니다. 생성된
unique_resource
는
bool
(
r
==
invalid
)
가
false
인 경우에만 리소스를 소유합니다.
프로그램은 표현식 r == invalid 가 bool로 문맥적 변환 bool 될 수 없으면 형식이 잘못되었으며, 변환 결과가 정의되지 않은 동작을 발생시키거나 예외를 발생시키는 경우 동작은 정의되지 않습니다.
목차 |
매개변수
| r | - | 리소스 핸들 |
| d | - | 리소스를 해제하는 데 사용할 삭제자 |
| invalid | - | 리소스 핸들이 유효하지 않음을 나타내는 값 |
반환 값
위에서 설명한
unique_resource
입니다.
예외
저장된 리소스 핸들과 삭제자의 초기화 과정에서 발생하는 모든 예외.
std::
is_nothrow_constructible_v
<
std::
decay_t
<
R
>
, R
>
&&
std::
is_nothrow_constructible_v
<
std::
decay_t
<
D
>
, D
>
참고 사항
make_unique_resource_checked
는 잘못된 인자로 삭제자 함수를 호출하는 것을 방지하기 위해 존재합니다.
리소스 핸들
r
는 반환 값으로 복사되거나 이동되며, 생성된
unique_resource
는 항상 객체 타입을 가진 기본 리소스 핸들을 보유합니다.
예제
#include <cstdio> #include <experimental/scope> int main() { // fopen이 실패할 때 fclose 호출 방지 auto file = std::experimental::make_unique_resource_checked( std::fopen("potentially_nonexistent_file.txt", "r"), nullptr, [](std::FILE *fptr) { std::fclose(fptr); } ); if (file.get()) std::puts("The file exists."); else std::puts("The file does not exist."); }
가능한 출력:
The file does not exist.
참고 항목
웹페이지의 텍스트를 한국어로 번역합니다: HTML 태그나 속성은 번역하지 마십시오. 원래 형식을 유지하십시오.
,
,