50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
[fs.req]
|
||
|
||
# 31 Input/output library [[input.output]](./#input.output)
|
||
|
||
## 31.12 File systems [[filesystems]](filesystems#fs.req)
|
||
|
||
### 31.12.3 Requirements [fs.req]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13241)
|
||
|
||
Throughout subclause [[filesystems]](filesystems "31.12 File systems"), char, wchar_t, char8_t,char16_t, and char32_t are collectively called[*encoded character types*](#def:encoded_character_type "31.12.3 Requirements [fs.req]")[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13246)
|
||
|
||
Functions with template parameters named EcharT shall not participate in overload resolution
|
||
unless EcharT is one of the encoded character types[.](#2.sentence-1)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13251)
|
||
|
||
Template parameters named InputIterator shall meet the[*Cpp17InputIterator*](input.iterators#:Cpp17InputIterator "24.3.5.3 Input iterators [input.iterators]") requirements ([[input.iterators]](input.iterators "24.3.5.3 Input iterators")) and shall
|
||
have a value type that is one of the encoded character types[.](#3.sentence-1)
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13256)
|
||
|
||
[*Note [1](#note-1)*:
|
||
|
||
Use of an encoded character type implies an associated
|
||
character set and encoding[.](#4.sentence-1)
|
||
|
||
Since signed char and unsigned char have no
|
||
implied character set and encoding,
|
||
they are not included as permitted types[.](#4.sentence-2)
|
||
|
||
â *end note*]
|
||
|
||
[5](#5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13265)
|
||
|
||
Template parameters named Allocator shall meet
|
||
the [*Cpp17Allocator*](allocator.requirements.general#:Cpp17Allocator "16.4.4.6.1 General [allocator.requirements.general]") requirements ([[allocator.requirements.general]](allocator.requirements.general "16.4.4.6.1 General"))[.](#5.sentence-1)
|