decay-copy
|
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
>>
|
(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
를 반환함
(함수 템플릿) |
|
(C++20)
|
범위의 시작을 가리키는 반복자를 반환함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
범위의 끝을 나타내는 센티널을 반환함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
범위에 대한 역방향 반복자를 반환함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
범위에 대한 역방향 끝 반복자를 반환함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
범위의 크기와 같은 정수를 반환함
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
연속 범위의 시작 부분에 대한 포인터를 얻음
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
view
의 모든 요소를 포함하는
range
(별칭 템플릿) (범위 어댑터 객체) |
|
(C++20)
|
다른
view
의 처음 N개 요소로 구성된
view
(클래스 템플릿) (범위 어댑터 객체) |
|
(C++20)
|
다른
view
의 요소들 중 처음 N개 요소를 건너뛴
view
로 구성됨
(클래스 템플릿) (범위 어댑터 객체) |