From Jason Turner

[func.bind.bind]

Diff to HTML by rtfpessoa

tmp/tmpycg0z86w/{from.md → to.md} RENAMED
@@ -1,14 +1,14 @@
1
- ##### Function template `bind` <a id="func.bind.bind">[[func.bind.bind]]</a>
2
 
3
  In the text that follows, the following names have the following
4
  meanings:
5
 
6
- - `FD` is the type `decay<F>::type`,
7
  - `fd` is an lvalue of type `FD` constructed from `std::forward<F>(f)`,
8
- - `Ti` is the iᵗʰ type in the template parameter back `BoundArgs`,
9
- - `TiD` is the type `decay<Ti>::type`,
10
  - `ti` is the iᵗʰ argument in the function parameter pack `bound_args`,
11
  - `tid` is an lvalue of type `TiD` constructed from
12
  `std::forward<Ti>(ti)`,
13
  - `Uj` is the jᵗʰ deduced type of the `UnBoundArgs&&...` parameter of
14
  the forwarding call wrapper, and
@@ -25,11 +25,11 @@ template<class F, class... BoundArgs>
25
  expression for some values *w1, w2, ..., wN*, where
26
  `N == sizeof...(bound_args)`.
27
 
28
  *Returns:* A forwarding call wrapper `g` with a weak result
29
  type ([[func.require]]). The effect of `g(u1, u2, ..., uM)` shall be
30
- *`INVOKE`*`(fd, v1, v2, ..., vN, result_of<FD `*`cv`*` (V1, V2, ..., VN)>::type)`,
31
  where *`cv`* represents the *cv*-qualifiers of `g` and the values and
32
  types of the bound arguments `v1, v2, ..., vN` are determined as
33
  specified below. The copy constructor and move constructor of the
34
  forwarding call wrapper shall throw an exception if and only if the
35
  corresponding constructor of `FD` or of any of the types `TiD` throws an
@@ -54,11 +54,12 @@ template<class R, class F, class... BoundArgs>
54
  *`INVOKE`*`(fd, w1, w2, ..., wN)` shall be a valid expression for some
55
  values *w1, w2, ..., wN*, where `N == sizeof...(bound_args)`.
56
 
57
  *Returns:* A forwarding call wrapper `g` with a nested type
58
  `result_type` defined as a synonym for `R`. The effect of
59
- `g(u1, u2, ..., uM)` shall be *`INVOKE`*`(fd, v1, v2, ..., vN, R)`,
 
60
  where the values and types of the bound arguments `v1, v2, ..., vN` are
61
  determined as specified below. The copy constructor and move constructor
62
  of the forwarding call wrapper shall throw an exception if and only if
63
  the corresponding constructor of `FD` or of any of the types `TiD`
64
  throws an exception.
@@ -79,10 +80,10 @@ from the call to `bind` and the *cv*-qualifiers *cv* of the call wrapper
79
 
80
  - if `TiD` is `reference_wrapper<T>`, the argument is `tid.get()` and
81
  its type `Vi` is `T&`;
82
  - if the value of `is_bind_expression<TiD>::value` is `true`, the
83
  argument is `tid(std::forward<Uj>({}uj)...)` and its type `Vi` is
84
- `result_of<TiD cv (Uj...)>::type`;
85
  - if the value `j` of `is_placeholder<TiD>::value` is not zero, the
86
  argument is `std::forward<Uj>(uj)` and its type `Vi` is `Uj&&`;
87
  - otherwise, the value is `tid` and its type `Vi` is `TiD cv &`.
88
 
 
1
+ #### Function template `bind` <a id="func.bind.bind">[[func.bind.bind]]</a>
2
 
3
  In the text that follows, the following names have the following
4
  meanings:
5
 
6
+ - `FD` is the type `decay_t<F>`,
7
  - `fd` is an lvalue of type `FD` constructed from `std::forward<F>(f)`,
8
+ - `Ti` is the iᵗʰ type in the template parameter pack `BoundArgs`,
9
+ - `TiD` is the type `decay_t<Ti>`,
10
  - `ti` is the iᵗʰ argument in the function parameter pack `bound_args`,
11
  - `tid` is an lvalue of type `TiD` constructed from
12
  `std::forward<Ti>(ti)`,
13
  - `Uj` is the jᵗʰ deduced type of the `UnBoundArgs&&...` parameter of
14
  the forwarding call wrapper, and
 
25
  expression for some values *w1, w2, ..., wN*, where
26
  `N == sizeof...(bound_args)`.
27
 
28
  *Returns:* A forwarding call wrapper `g` with a weak result
29
  type ([[func.require]]). The effect of `g(u1, u2, ..., uM)` shall be
30
+ *`INVOKE`*`(fd, std::forward<V1>(v1), std::forward<V2>(v2), ..., std::forward<VN>(vN), result_of_t<FD `*`cv`*` & (V1, V2, ..., VN)>)`,
31
  where *`cv`* represents the *cv*-qualifiers of `g` and the values and
32
  types of the bound arguments `v1, v2, ..., vN` are determined as
33
  specified below. The copy constructor and move constructor of the
34
  forwarding call wrapper shall throw an exception if and only if the
35
  corresponding constructor of `FD` or of any of the types `TiD` throws an
 
54
  *`INVOKE`*`(fd, w1, w2, ..., wN)` shall be a valid expression for some
55
  values *w1, w2, ..., wN*, where `N == sizeof...(bound_args)`.
56
 
57
  *Returns:* A forwarding call wrapper `g` with a nested type
58
  `result_type` defined as a synonym for `R`. The effect of
59
+ `g(u1, u2, ..., uM)` shall be
60
+ *`INVOKE`*`(fd, std::forward<V1>(v1), std::forward<V2>(v2), ..., std::forward<VN>(vN), R)`,
61
  where the values and types of the bound arguments `v1, v2, ..., vN` are
62
  determined as specified below. The copy constructor and move constructor
63
  of the forwarding call wrapper shall throw an exception if and only if
64
  the corresponding constructor of `FD` or of any of the types `TiD`
65
  throws an exception.
 
80
 
81
  - if `TiD` is `reference_wrapper<T>`, the argument is `tid.get()` and
82
  its type `Vi` is `T&`;
83
  - if the value of `is_bind_expression<TiD>::value` is `true`, the
84
  argument is `tid(std::forward<Uj>({}uj)...)` and its type `Vi` is
85
+ `result_of_t<TiD cv & (Uj&&...)>&&`;
86
  - if the value `j` of `is_placeholder<TiD>::value` is not zero, the
87
  argument is `std::forward<Uj>(uj)` and its type `Vi` is `Uj&&`;
88
  - otherwise, the value is `tid` and its type `Vi` is `TiD cv &`.
89