From Jason Turner

[iostream.forward.overview]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpq0ick8mx/{from.md → to.md} +13 -23
tmp/tmpq0ick8mx/{from.md → to.md} RENAMED
@@ -5,48 +5,38 @@ virtual base class for the class templates `basic_istream`,
5
  `basic_ostream`, and class templates derived from them. `basic_iostream`
6
  is a class template derived from both `basic_istream<charT, traits>` and
7
  `basic_ostream<charT, traits>`.
8
 
9
  The class template specialization `basic_streambuf<charT, traits>`
10
- serves as a base class for class templates `basic_stringbuf` and
11
- `basic_filebuf`.
12
 
13
  The class template specialization `basic_istream<charT, traits>` serves
14
  as a base class for class templates `basic_istringstream` and
15
  `basic_ifstream`.
16
 
17
  The class template specialization `basic_ostream<charT, traits>` serves
18
- as a base class for class templates `basic_ostringstream` and
19
- `basic_ofstream`.
20
 
21
  The class template specialization `basic_iostream<charT, traits>` serves
22
  as a base class for class templates `basic_stringstream` and
23
  `basic_fstream`.
24
 
 
 
 
 
25
  Other *typedef-name*s define instances of class templates specialized
26
  for `char` or `wchar_t` types.
27
 
28
  Specializations of the class template `fpos` are used for specifying
29
  file position information.
30
 
31
- The types `streampos` and `wstreampos` are used for positioning streams
32
- specialized on `char` and `wchar_t` respectively.
 
33
 
34
- [*Note 1*:
35
-
36
- This synopsis suggests a circularity between `streampos` and
37
  `char_traits<char>`. An implementation can avoid this circularity by
38
- substituting equivalent types. One way to do this might be
39
-
40
- ``` cpp
41
- template<class stateT> class fpos { ... }; // depends on nothing
42
- using _STATE = ... ; // implementation private declaration of stateT
43
-
44
- using streampos = fpos<_STATE>;
45
-
46
- template<> struct char_traits<char> {
47
- using pos_type = streampos;
48
- }
49
- ```
50
-
51
- — *end note*]
52
 
 
5
  `basic_ostream`, and class templates derived from them. `basic_iostream`
6
  is a class template derived from both `basic_istream<charT, traits>` and
7
  `basic_ostream<charT, traits>`.
8
 
9
  The class template specialization `basic_streambuf<charT, traits>`
10
+ serves as a base class for class templates `basic_stringbuf`,
11
+ `basic_filebuf`, and `basic_syncbuf`.
12
 
13
  The class template specialization `basic_istream<charT, traits>` serves
14
  as a base class for class templates `basic_istringstream` and
15
  `basic_ifstream`.
16
 
17
  The class template specialization `basic_ostream<charT, traits>` serves
18
+ as a base class for class templates `basic_ostringstream`,
19
+ `basic_ofstream`, and `basic_osyncstream`.
20
 
21
  The class template specialization `basic_iostream<charT, traits>` serves
22
  as a base class for class templates `basic_stringstream` and
23
  `basic_fstream`.
24
 
25
+ [*Note 1*: For each of the class templates above, the program is
26
+ ill-formed if `traits::char_type` is not the same type as `charT`
27
+ [[char.traits]]. — *end note*]
28
+
29
  Other *typedef-name*s define instances of class templates specialized
30
  for `char` or `wchar_t` types.
31
 
32
  Specializations of the class template `fpos` are used for specifying
33
  file position information.
34
 
35
+ [*Example 1*: The types `streampos` and `wstreampos` are used for
36
+ positioning streams specialized on `char` and `wchar_t`
37
+ respectively. — *end example*]
38
 
39
+ [*Note 2*: This synopsis suggests a circularity between `streampos` and
 
 
40
  `char_traits<char>`. An implementation can avoid this circularity by
41
+ substituting equivalent types. *end note*]
 
 
 
 
 
 
 
 
 
 
 
 
 
42