From Jason Turner

[thread.thread.constr]

Diff to HTML by rtfpessoa

tmp/tmprv7t3_8q/{from.md → to.md} RENAMED
@@ -16,10 +16,13 @@ template <class F, class ...Args> explicit thread(F&& f, Args&&... args);
16
  *Requires:*  `F` and each `Ti` in `Args` shall satisfy the
17
  `MoveConstructible` requirements. *`INVOKE`*`(`*`DECAY_COPY`*`(`
18
  `std::forward<F>(f)), `*`DECAY_COPY`*`(std::forward<Args>(args))...)` ([[func.require]])
19
  shall be a valid expression.
20
 
 
 
 
21
  *Effects:*  Constructs an object of type `thread`. The new thread of
22
  execution executes
23
  *`INVOKE`*`(`*`DECAY_COPY`*`(` `std::forward<F>(f)), `*`DECAY_COPY`*`(std::forward<Args>(args))...)`
24
  with the calls to *`DECAY_COPY`* being evaluated in the constructing
25
  thread. Any return value from this invocation is ignored. This implies
 
16
  *Requires:*  `F` and each `Ti` in `Args` shall satisfy the
17
  `MoveConstructible` requirements. *`INVOKE`*`(`*`DECAY_COPY`*`(`
18
  `std::forward<F>(f)), `*`DECAY_COPY`*`(std::forward<Args>(args))...)` ([[func.require]])
19
  shall be a valid expression.
20
 
21
+ *Remarks:* This constructor shall not participate in overload resolution
22
+ if `decay_t<F>` is the same type as `std::thread`.
23
+
24
  *Effects:*  Constructs an object of type `thread`. The new thread of
25
  execution executes
26
  *`INVOKE`*`(`*`DECAY_COPY`*`(` `std::forward<F>(f)), `*`DECAY_COPY`*`(std::forward<Args>(args))...)`
27
  with the calls to *`DECAY_COPY`* being evaluated in the constructing
28
  thread. Any return value from this invocation is ignored. This implies