memory_allocator_traits

memory_allocator_traits (std::allocator_traits)

<memory> 헤더에 정의되어 있어요. Allocator의 다양한 속성에 접근하는 표준화된 방법을 제공하는 클래스 템플릿이에요. 표준 컨테이너와 다른 표준 라이브러리 구성 요소들은 이 템플릿을 통해 할당자에 접근해요.

출처: cppreference

본문

template< class Alloc >
struct allocator_traits;

(C++11부터)

allocator_traits는 Allocator의 다양한 속성에 표준화된 방식으로 접근하게 해줘요. 사용자가 제공하는 std::allocator_traits 특수화가 필요한 기능을 모두 구현하는 한, 어떤 클래스 타입도 할당자로 쓸 수 있어요.

std::allocator_traits의 명시적·부분 특수화를 선언하는 프로그램은 ill-formed예요(진단 불필요). (C++23)

기본(특수화되지 않은) std::allocator_traits는 다음 멤버를 가져요.

멤버 타입

타입 정의
allocator_type Alloc
value_type Alloc::value_type
pointer Alloc::pointer가 있으면 그것, 아니면 value_type*
const_pointer Alloc::const_pointer가 있으면 그것, 아니면 pointer를 const로
void_pointer Alloc::void_pointer가 있으면 그것, 아니면 void*
const_void_pointer Alloc::const_void_pointer가 있으면 그것, 아니면 void const*
size_type Alloc::size_type이 있으면 그것, 아니면 std::make_unsigned_t<...>
difference_type Alloc::difference_type이 있으면 그것, 아니면 std::ptrdiff_t
propagate_on_container_copy_assignment Alloc에 있으면 그것, 아니면 std::false_type
propagate_on_container_move_assignment Alloc에 있으면 그것, 아니면 std::false_type
propagate_on_container_swap Alloc에 있으면 그것, 아니면 std::false_type
is_always_equal Alloc에 있으면 그것, 아니면 std::is_empty<Alloc>

또한 allocate, deallocate, construct, destroy, max_size, select_on_container_copy_construction, rebind_alloc, rebind_traits 같은 정적 멤버 함수를 제공해요. 특정 멤버가 없으면 기본 동작을 제공해, 최소한의 할당자 정의만으로도 표준 컨테이너와 함께 쓸 수 있게 해줘요.

더 알아보기 (Learn more)

cppreference