[utility.requirements.general]

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

## 16.4 Library-wide requirements [[requirements]](requirements#utility.requirements.general)

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

#### 16.4.4.1 General [utility.requirements.general]

[1](#1)

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

[[utility.arg.requirements]](utility.arg.requirements "16.4.4.2 Template argument requirements") describes requirements on types and expressions used to instantiate templates
defined in the C++ standard library[.](#1.sentence-1)

[[swappable.requirements]](swappable.requirements "16.4.4.3 Swappable requirements") describes the requirements on swappable types and
swappable expressions[.](#1.sentence-2)

[[nullablepointer.requirements]](nullablepointer.requirements "16.4.4.4 Cpp17NullablePointer requirements") describes the requirements on pointer-like
types that support null values[.](#1.sentence-3)

[[hash.requirements]](hash.requirements "16.4.4.5 Cpp17Hash requirements") describes the requirements on hash function objects[.](#1.sentence-4)

[[allocator.requirements]](allocator.requirements "16.4.4.6 Cpp17Allocator requirements") describes the requirements on storage
allocators[.](#1.sentence-5)
