uses_allocator_construction_args — std::uses_allocator_construction_args

uses_allocator_construction_args — std::uses_allocator_construction_args

std::uses_allocator_construction_args는 uses-allocator 생성을 위한 생성자 인자 목록을 만드는 함수예요. C++20에서 도입됐어요. <memory> 헤더에 제공돼요.

타입 T가 할당자를 사용하는지에 따라, 할당자를 ptr 방식 또는 allocator_arg 방식으로 생성자 인자에 끼워넣은 인자 튜플을 만들어 반환해요. 제네릭 코드에서 할당자 인식 객체를 생성할 때 인자를 준비하는 데 쓰여요.

출처: cppreference

본문

std::uses_allocator_construction_args는 uses-allocator 생성을 위한 인자를 준비해요.

template<class T, class Alloc, class... Args>
constexpr auto uses_allocator_construction_args(const Alloc& alloc, Args&&... args) noexcept;

T에 대해 할당자 alloc을 포함한 생성자 인자 세트를 반환해요. 동작은 Tuses_allocator에 해당하는지에 따라 달라져요.

  • T가 할당자 인식 타입이 아니면, alloc을 무시하고 args...를 그대로 반환해요.
  • 할당자 인식이면, Tallocator_arg_t 태그를 쓰는지(allocator_arg_t 생성자)에 따라 allocator_arg, alloc, args... 형태 또는 앞/뒤에 할당자를 배치하는 형태의 인자 튜플을 만들어요.

이 함수가 만든 인자로 실제로 객체를 생성하는 것은 make_obj_using_allocatoruninitialized_construct_using_allocator가 해요. std::scoped_allocator_adaptor 같은 곳이 내부적으로 이 메커니즘을 활용해요.

같이 보기

  • std::make_obj_using_allocator
  • std::uninitialized_construct_using_allocator
  • std::uses_allocator

더 알아보기 (Learn more)

cppreference