ranges_construct_at
ranges_construct_at (ranges::construct_at)
<memory> 헤더에 정의되어 있어요. 주어진 주소 location에 args 인자들로 초기화된 T 객체를 생성해요. std::construct_at의 ranges 버전(니블로이드, niebloid)이에요. C++20부터 도입됐어요.
출처: cppreference
본문
호출 시그니처:
template< class T, class... Args >
constexpr T* construct_at( T* location, Args&&... args );
(C++20부터)
주어진 주소 location에 args 인자들로 초기화된 T 객체를 생성해요. 다음과 동등해요.
if constexpr (std::is_array_v<T>)
return ::new (voidify(*location)) T[1]();
else
return ::new (voidify(*location)) T(std::forward<Args>(args)...);
다만 construct_at은 상수 표현식의 평가에서 쓸 수 있어요. (C++26 이전)
construct_at이 어떤 상수 표현식 expr의 평가에서 호출되면, location은 std::allocator<T>::allocate로 얻은 저장 공간이거나 expr의 평가 안에서 수명이 시작된 객체를 가리켜야 해요.
이 페이지에 설명된 함수 같은 개체들은 알고리즘 함수 객체(니블로이드)라서, 명시적 템플릿 인자 목록을 쓸 수 없고(함수 호출 시점에 추론), 인자 연관 탐색으로 찾을 수 있어요.
매개변수
location:T객체가 구성될 초기화되지 않은 저장 공간에 대한 포인터args...: 초기화에 사용할 인자들
반환값
location.