Namespaces
Variants

decay-copy

From cppreference.net
template < class T >
typename std:: decay < T > :: type decay - copy ( T && value ) ;
(C++11부터)
(C++20까지)
( 설명 전용* )
template < class T >

requires std:: convertible_to < T, std:: decay_t < T >>
constexpr std:: decay_t < T > decay - copy ( T && value )

noexcept ( std:: is_nothrow_convertible_v < T, std:: decay_t < T >> ) ;
(C++20부터)
( 설명 전용* )

std:: forward < T > ( value ) (암시적으로 decayed 타입으로 변환됨)을 반환하며, 이는 value 의 decayed prvalue 복사본입니다.

목차

매개변수

value - 복사할 값

반환값

value 의 붕괴된 복사본을 prvalue로 반환합니다.

참고 사항

decay-copy LWG 이슈 929 의 해결을 통해 도입되었습니다. 이는 초기에 동시성 지원 라이브러리 에서 값으로 전달 시 인자가 decay 되도록 보장하기 위해 사용되었으며, 이후 범위 라이브러리 에서도 사용됩니다.

C++23에서 도입된 언어 기능 auto ( x ) 또한 decayed 복사본을 prvalue로 생성할 수 있게 합니다. 유일한 차이점은 decay-copy 는 항상 materializes value 하고 복사본을 생성하는 반면, auto ( expr ) expr 이 prvalue인 경우 no-op이라는 점입니다.

표준 라이브러리에서 decay-copy 의 모든 사용처(아래 참조) 중 views::all , ranges::take_view ranges::drop_view 를 제외한 나머지는 C++23부터 auto ( x ) 로 대체되었습니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3724 C++20 decay-copy 가 제약되지 않았음 제약됨

참고 항목

새로운 thread 객체를 생성함
( std::thread 의 public 멤버 함수)
새로운 jthread 객체를 생성함
( std::jthread 의 public 멤버 함수)
(C++11)
함수를 비동기적으로 실행하고(새 스레드에서 실행될 수 있음) 결과를 담을 std::future 를 반환함
(함수 템플릿)
범위의 시작을 가리키는 반복자를 반환함
(커스터마이제이션 포인트 객체)
범위의 끝을 나타내는 센티널을 반환함
(커스터마이제이션 포인트 객체)
범위에 대한 역방향 반복자를 반환함
(커스터마이제이션 포인트 객체)
범위에 대한 역방향 끝 반복자를 반환함
(커스터마이제이션 포인트 객체)
범위의 크기와 같은 정수를 반환함
(커스터마이제이션 포인트 객체)
연속 범위의 시작 부분에 대한 포인터를 얻음
(커스터마이제이션 포인트 객체)
view 의 모든 요소를 포함하는 range
(별칭 템플릿) (범위 어댑터 객체)
다른 view 의 처음 N개 요소로 구성된 view
(클래스 템플릿) (범위 어댑터 객체)
다른 view 의 요소들 중 처음 N개 요소를 건너뛴 view 로 구성됨
(클래스 템플릿) (범위 어댑터 객체)