tmp/tmp2pitin09/{from.md → to.md}
RENAMED
|
@@ -1,40 +1,39 @@
|
|
| 1 |
## Iostreams requirements <a id="iostreams.requirements">[[iostreams.requirements]]</a>
|
| 2 |
|
| 3 |
### Imbue limitations <a id="iostream.limits.imbue">[[iostream.limits.imbue]]</a>
|
| 4 |
|
| 5 |
-
No function described in
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
|
| 12 |
### Positioning type limitations <a id="iostreams.limits.pos">[[iostreams.limits.pos]]</a>
|
| 13 |
|
| 14 |
-
The classes of
|
| 15 |
-
|
| 16 |
`traits::off_type` are `streampos` and `streamoff` respectively. Except
|
| 17 |
as noted explicitly below, their behavior when `traits::pos_type` and
|
| 18 |
`traits::off_type` are other types is *implementation-defined*.
|
| 19 |
|
| 20 |
-
In the classes of
|
| 21 |
-
|
| 22 |
`wchar_t`, and any other *implementation-defined* character types that
|
| 23 |
-
|
| 24 |
components can be instantiated.
|
| 25 |
|
| 26 |
### Thread safety <a id="iostreams.threadsafety">[[iostreams.threadsafety]]</a>
|
| 27 |
|
| 28 |
-
Concurrent access to a stream object
|
| 29 |
-
[[file.streams]]), stream buffer object
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
[[iostream.objects]]).
|
| 33 |
|
| 34 |
-
[*Note 1*: Data races result in undefined behavior
|
| 35 |
-
[[intro.multithread]]
|
| 36 |
|
| 37 |
If one thread makes a library call *a* that writes a value to a stream
|
| 38 |
and, as a result, another thread reads this value from the stream
|
| 39 |
through a library call *b* such that this does not result in a data
|
| 40 |
race, then *a*’s write synchronizes with *b*’s read.
|
|
|
|
| 1 |
## Iostreams requirements <a id="iostreams.requirements">[[iostreams.requirements]]</a>
|
| 2 |
|
| 3 |
### Imbue limitations <a id="iostream.limits.imbue">[[iostream.limits.imbue]]</a>
|
| 4 |
|
| 5 |
+
No function described in [[input.output]] except for `ios_base::imbue`
|
| 6 |
+
and `basic_filebuf::pubimbue` causes any instance of `basic_ios::imbue`
|
| 7 |
+
or `basic_streambuf::imbue` to be called. If any user function called
|
| 8 |
+
from a function declared in [[input.output]] or as an overriding virtual
|
| 9 |
+
function of any class declared in [[input.output]] calls `imbue`, the
|
| 10 |
+
behavior is undefined.
|
| 11 |
|
| 12 |
### Positioning type limitations <a id="iostreams.limits.pos">[[iostreams.limits.pos]]</a>
|
| 13 |
|
| 14 |
+
The classes of [[input.output]] with template arguments `charT` and
|
| 15 |
+
`traits` behave as described if `traits::pos_type` and
|
| 16 |
`traits::off_type` are `streampos` and `streamoff` respectively. Except
|
| 17 |
as noted explicitly below, their behavior when `traits::pos_type` and
|
| 18 |
`traits::off_type` are other types is *implementation-defined*.
|
| 19 |
|
| 20 |
+
In the classes of [[input.output]], a template parameter with name
|
| 21 |
+
`charT` represents a member of the set of types containing `char`,
|
| 22 |
`wchar_t`, and any other *implementation-defined* character types that
|
| 23 |
+
meet the requirements for a character on which any of the iostream
|
| 24 |
components can be instantiated.
|
| 25 |
|
| 26 |
### Thread safety <a id="iostreams.threadsafety">[[iostreams.threadsafety]]</a>
|
| 27 |
|
| 28 |
+
Concurrent access to a stream object ([[string.streams]],
|
| 29 |
+
[[file.streams]]), stream buffer object [[stream.buffers]], or C Library
|
| 30 |
+
stream [[c.files]] by multiple threads may result in a data race
|
| 31 |
+
[[intro.multithread]] unless otherwise specified [[iostream.objects]].
|
|
|
|
| 32 |
|
| 33 |
+
[*Note 1*: Data races result in undefined behavior
|
| 34 |
+
[[intro.multithread]]. — *end note*]
|
| 35 |
|
| 36 |
If one thread makes a library call *a* that writes a value to a stream
|
| 37 |
and, as a result, another thread reads this value from the stream
|
| 38 |
through a library call *b* such that this does not result in a data
|
| 39 |
race, then *a*’s write synchronizes with *b*’s read.
|