ranges_construct_at

ranges_construct_at (ranges::construct_at)

<memory> 헤더에 정의되어 있어요. 주어진 주소 locationargs 인자들로 초기화된 T 객체를 생성해요. std::construct_at의 ranges 버전(니블로이드, niebloid)이에요. C++20부터 도입됐어요.

출처: cppreference

본문

호출 시그니처:

template< class T, class... Args >
constexpr T* construct_at( T* location, Args&&... args );

(C++20부터)

주어진 주소 locationargs 인자들로 초기화된 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의 평가에서 호출되면, locationstd::allocator<T>::allocate로 얻은 저장 공간이거나 expr의 평가 안에서 수명이 시작된 객체를 가리켜야 해요.

이 페이지에 설명된 함수 같은 개체들은 알고리즘 함수 객체(니블로이드)라서, 명시적 템플릿 인자 목록을 쓸 수 없고(함수 호출 시점에 추론), 인자 연관 탐색으로 찾을 수 있어요.

매개변수

  • location: T 객체가 구성될 초기화되지 않은 저장 공간에 대한 포인터
  • args...: 초기화에 사용할 인자들

반환값

location.

더 알아보기 (Learn more)

cppreference