[allocator.requirements.completeness]

# 16 Library introduction [[library]](./#library)

## 16.4 Library-wide requirements [[requirements]](requirements#allocator.requirements.completeness)

### 16.4.4 Requirements on types and expressions [[utility.requirements]](utility.requirements#allocator.requirements.completeness)

#### 16.4.4.6 *Cpp17Allocator* requirements [[allocator.requirements]](allocator.requirements#completeness)

#### 16.4.4.6.2 Allocator completeness requirements [allocator.requirements.completeness]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L2964)

If X is an allocator class for type T,X additionally meets the allocator completeness requirements if,
whether or not T is a complete type:

- [(1.1)](#1.1)

X is a complete type, and

- [(1.2)](#1.2)

all the member types of [allocator_traits<X>](allocator.traits "20.2.9 Allocator traits [allocator.traits]") other than value_type are complete types[.](#1.sentence-1)
