From Jason Turner

[thread.req]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpr8axhjk8/{from.md → to.md} +11 -5
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
- If a parameter is `Predicate`, `operator()` applied to the actual
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> typename decay<T>::type decay_copy(T&& v)
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