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을 포함한 생성자 인자 세트를 반환해요. 동작은 T가 uses_allocator에 해당하는지에 따라 달라져요.
T가 할당자 인식 타입이 아니면,alloc을 무시하고args...를 그대로 반환해요.- 할당자 인식이면,
T가allocator_arg_t태그를 쓰는지(allocator_arg_t생성자)에 따라allocator_arg, alloc, args...형태 또는 앞/뒤에 할당자를 배치하는 형태의 인자 튜플을 만들어요.
이 함수가 만든 인자로 실제로 객체를 생성하는 것은 make_obj_using_allocator나 uninitialized_construct_using_allocator가 해요. std::scoped_allocator_adaptor 같은 곳이 내부적으로 이 메커니즘을 활용해요.
같이 보기
std::make_obj_using_allocatorstd::uninitialized_construct_using_allocatorstd::uses_allocator