tmp/tmpr8axhjk8/{from.md → to.md}
RENAMED
|
@@ -1,14 +1,13 @@
|
|
| 1 |
## Requirements <a id="thread.req">[[thread.req]]</a>
|
| 2 |
|
| 3 |
### Template parameter names <a id="thread.req.paramname">[[thread.req.paramname]]</a>
|
| 4 |
|
| 5 |
Throughout this Clause, the names of template parameters are used to
|
| 6 |
-
express type requirements.
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
template argument shall return a value that is convertible to `bool`.
|
| 10 |
|
| 11 |
### Exceptions <a id="thread.req.exception">[[thread.req.exception]]</a>
|
| 12 |
|
| 13 |
Some functions described in this Clause are specified to throw
|
| 14 |
exceptions of type `system_error` ([[syserr.syserr]]). Such exceptions
|
|
@@ -97,10 +96,17 @@ operating system and hardware. The finest resolution provided by an
|
|
| 97 |
implementation is called the *native resolution*.
|
| 98 |
|
| 99 |
Implementation-provided clocks that are used for these functions shall
|
| 100 |
meet the `TrivialClock` requirements ([[time.clock.req]]).
|
| 101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
### Requirements for Lockable types <a id="thread.req.lockable">[[thread.req.lockable]]</a>
|
| 103 |
|
| 104 |
#### In general <a id="thread.req.lockable.general">[[thread.req.lockable.general]]</a>
|
| 105 |
|
| 106 |
An *execution agent* is an entity such as a thread that may perform work
|
|
@@ -210,9 +216,9 @@ been acquired for the current execution agent.
|
|
| 210 |
In several places in this Clause the operation *DECAY_COPY(x)* is used.
|
| 211 |
All such uses mean call the function `decay_copy(x)` and use the result,
|
| 212 |
where `decay_copy` is defined as follows:
|
| 213 |
|
| 214 |
``` cpp
|
| 215 |
-
template <class T>
|
| 216 |
{ return std::forward<T>(v); }
|
| 217 |
```
|
| 218 |
|
|
|
|
| 1 |
## Requirements <a id="thread.req">[[thread.req]]</a>
|
| 2 |
|
| 3 |
### Template parameter names <a id="thread.req.paramname">[[thread.req.paramname]]</a>
|
| 4 |
|
| 5 |
Throughout this Clause, the names of template parameters are used to
|
| 6 |
+
express type requirements. If a template parameter is named `Predicate`,
|
| 7 |
+
`operator()` applied to the template argument shall return a value that
|
| 8 |
+
is convertible to `bool`.
|
|
|
|
| 9 |
|
| 10 |
### Exceptions <a id="thread.req.exception">[[thread.req.exception]]</a>
|
| 11 |
|
| 12 |
Some functions described in this Clause are specified to throw
|
| 13 |
exceptions of type `system_error` ([[syserr.syserr]]). Such exceptions
|
|
|
|
| 96 |
implementation is called the *native resolution*.
|
| 97 |
|
| 98 |
Implementation-provided clocks that are used for these functions shall
|
| 99 |
meet the `TrivialClock` requirements ([[time.clock.req]]).
|
| 100 |
|
| 101 |
+
A function that takes an argument which specifies a timeout will throw
|
| 102 |
+
if, during its execution, a clock, time point, or time duration throws
|
| 103 |
+
an exception. Such exceptions are referred to as *timeout-related
|
| 104 |
+
exceptions*. instantiations of clock, time point and duration types
|
| 105 |
+
supplied by the implementation as specified in [[time.clock]] do not
|
| 106 |
+
throw exceptions.
|
| 107 |
+
|
| 108 |
### Requirements for Lockable types <a id="thread.req.lockable">[[thread.req.lockable]]</a>
|
| 109 |
|
| 110 |
#### In general <a id="thread.req.lockable.general">[[thread.req.lockable.general]]</a>
|
| 111 |
|
| 112 |
An *execution agent* is an entity such as a thread that may perform work
|
|
|
|
| 216 |
In several places in this Clause the operation *DECAY_COPY(x)* is used.
|
| 217 |
All such uses mean call the function `decay_copy(x)` and use the result,
|
| 218 |
where `decay_copy` is defined as follows:
|
| 219 |
|
| 220 |
``` cpp
|
| 221 |
+
template <class T> decay_t<T> decay_copy(T&& v)
|
| 222 |
{ return std::forward<T>(v); }
|
| 223 |
```
|
| 224 |
|