From Jason Turner

[func.bind.front]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpn_g6gtzv/{from.md → to.md} +41 -0
tmp/tmpn_g6gtzv/{from.md → to.md} RENAMED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### Function template `bind_front` <a id="func.bind.front">[[func.bind.front]]</a>
2
+
3
+ ``` cpp
4
+ template<class F, class... Args>
5
+ constexpr unspecified bind_front(F&& f, Args&&... args);
6
+ ```
7
+
8
+ In the text that follows:
9
+
10
+ - `g` is a value of the result of a `bind_front` invocation,
11
+ - `FD` is the type `decay_t<F>`,
12
+ - `fd` is the target object of `g` [[func.def]] of type `FD`,
13
+ direct-non-list-initialized with `std::forward<F>(f)`,
14
+ - `BoundArgs` is a pack that denotes `decay_t<Args>...`,
15
+ - `bound_args` is a pack of bound argument entities of `g` [[func.def]]
16
+ of types `BoundArgs...`, direct-non-list-initialized with
17
+ `std::forward<Args>(args)...`, respectively, and
18
+ - `call_args` is an argument pack used in a function call
19
+ expression [[expr.call]] of `g`.
20
+
21
+ *Mandates:*
22
+
23
+ ``` cpp
24
+ is_constructible_v<FD, F> &&
25
+ is_move_constructible_v<FD> &&
26
+ (is_constructible_v<BoundArgs, Args> && ...) &&
27
+ (is_move_constructible_v<BoundArgs> && ...)
28
+ ```
29
+
30
+ is `true`.
31
+
32
+ *Preconditions:* `FD` meets the *Cpp17MoveConstructible* requirements.
33
+ For each `Tᵢ` in `BoundArgs`, if `Tᵢ` is an object type, `Tᵢ` meets the
34
+ *Cpp17MoveConstructible* requirements.
35
+
36
+ *Returns:* A perfect forwarding call wrapper `g` with call pattern
37
+ `invoke(fd, bound_args..., call_args...)`.
38
+
39
+ *Throws:* Any exception thrown by the initialization of the state
40
+ entities of `g` [[func.def]].
41
+