[char.traits.typedefs]

# 27 Strings library [[strings]](./#strings)

## 27.2 Character traits [[char.traits]](char.traits#typedefs)

### 27.2.3 Traits typedefs [char.traits.typedefs]

[ð](#lib:char_type,char_traits)

`using int_type = see below;
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/strings.tex#L215)

*Preconditions*: int_type shall be able to represent all of the
valid characters converted from the correspondingchar_type values, as well as an end-of-file value,eof()[.](#1.sentence-1)[210](#footnote-210 "If eof() can be held in char_­type then some iostreams operations can give surprising results.")

[ð](#lib:state_type,char_traits)

`using state_type = see below;
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/strings.tex#L238)

*Preconditions*: state_type meets the[*Cpp17Destructible*](utility.arg.requirements#:Cpp17Destructible "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [35](utility.arg.requirements#tab:cpp17.destructible "Table 35: Cpp17Destructible requirements")),[*Cpp17CopyAssignable*](utility.arg.requirements#:Cpp17CopyAssignable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [34](utility.arg.requirements#tab:cpp17.copyassignable "Table 34: Cpp17CopyAssignable requirements (in addition to Cpp17MoveAssignable)")),[*Cpp17CopyConstructible*](utility.arg.requirements#:Cpp17CopyConstructible "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [32](utility.arg.requirements#tab:cpp17.copyconstructible "Table 32: Cpp17CopyConstructible requirements (in addition to Cpp17MoveConstructible)")), and[*Cpp17DefaultConstructible*](utility.arg.requirements#:Cpp17DefaultConstructible "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [30](utility.arg.requirements#tab:cpp17.defaultconstructible "Table 30: Cpp17DefaultConstructible requirements")) requirements[.](#2.sentence-1)

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

Ifeof() can be held inchar_type then some iostreams operations can give surprising results[.](#footnote-210.sentence-1)
