[res.on.headers]

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

## 16.4 Library-wide requirements [[requirements]](requirements#res.on.headers)

### 16.4.6 Conforming implementations [[conforming]](conforming#res.on.headers)

#### 16.4.6.2 Headers [res.on.headers]

[1](#1)

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

A C++ header may include other C++ headers[.](#1.sentence-1)

A C++ header shall provide the declarations and definitions that appear in its
synopsis[.](#1.sentence-2)

A C++ header shown in its synopsis as including other C++ headers
shall provide the declarations and definitions that appear in the synopses of
those other headers[.](#1.sentence-3)

[2](#2)

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

Certain types and macros are defined in more than one header[.](#2.sentence-1)

Every such entity shall be defined such that any header that defines it may be
included after any other header that also defines it ([[basic.def.odr]](basic.def.odr "6.3 One-definition rule"))[.](#2.sentence-2)

[3](#3)

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

The [C standard library headers](support.c.headers "17.15 C headers [support.c.headers]") shall include only their corresponding C++ standard library header,
as described in [[headers]](headers "16.4.2.3 Headers")[.](#3.sentence-1)
