[reserved.names.general]

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

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

### 16.4.5 Constraints on programs [[constraints]](constraints#reserved.names.general)

#### 16.4.5.3 Reserved names [[reserved.names]](reserved.names#general)

#### 16.4.5.3.1 General [reserved.names.general]

[1](#1)

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

The C++ standard library reserves the following kinds of names:

- [(1.1)](#1.1)

macros

- [(1.2)](#1.2)

global names

- [(1.3)](#1.3)

names with external linkage

[2](#2)

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

If a program declares or defines a name in a context where it is
reserved, other than as explicitly allowed by [[library]](library "16 Library introduction"), its behavior is
undefined[.](#2.sentence-1)
