tmp/tmpycg0z86w/{from.md → to.md}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
| 1 |
-
####
|
| 2 |
|
| 3 |
In the text that follows, the following names have the following
|
| 4 |
meanings:
|
| 5 |
|
| 6 |
-
- `FD` is the 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
|
| 9 |
-
- `TiD` is the 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,
|
| 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
|
|
|
|
| 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 |
-
`
|
| 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 |
|