[enumerated.types]

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

## 16.3 Method of description [[description]](description#enumerated.types)

### 16.3.3 Other conventions [[conventions]](conventions#enumerated.types)

#### 16.3.3.3 Type descriptions [[type.descriptions]](type.descriptions#enumerated.types)

#### 16.3.3.3.2 Enumerated types [enumerated.types]

[1](#1)

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

Several types defined in [[input.output]](input.output "31 Input/output library") are[*enumerated types*](#def:type,enumerated "16.3.3.3.2 Enumerated types [enumerated.types]")[.](#1.sentence-1)

Each enumerated type may be implemented as an enumeration or as a synonym for
an enumeration[.](#1.sentence-2)[138](#footnote-138 "Such as an integer type, with constant integer values ([basic.fundamental]).")

[2](#2)

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

The enumerated type *enumerated* can be written:enum *enumerated* { V0, V1, V2, V3, … };

inline const enumerated C0(V0);inline const enumerated C1(V1);inline const enumerated C2(V2);inline const enumerated C3(V3);
 ⋮

[3](#3)

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

Here, the names C0,C1, etc. represent[*enumerated elements*](#def:enumerated_element "16.3.3.3.2 Enumerated types [enumerated.types]") for this particular enumerated type[.](#3.sentence-1)

All such elements have distinct values[.](#3.sentence-2)

[138)](#footnote-138)[138)](#footnoteref-138)

Such as an integer type, with constant integer
values ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types"))[.](#footnote-138.sentence-1)
