@@ -222,7 +222,7 @@ <h2>概要</h2>
222
222
< p > 例えば、関数パラメーターパックをムーブしてキャプチャしようとする際には、次のように書くことができる。</ p >
223
223
< p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> class</ span > < span class ="p "> ...</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span >
224
224
< span class ="k "> auto</ span > < span class ="n "> f</ span > < span class ="p "> (</ span > < span class ="n "> Args</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
225
- < span class ="p "> [...</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > move </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )]</ span > < span class ="p "> {</ span > < span class ="c1 "> // 初期化キャプチャでのパック展開</ span >
225
+ < span class ="p "> [...</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> < a href =" ../../reference/algorithm/move.html " > std::move </ a > </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )]</ span > < span class ="p "> {</ span > < span class ="c1 "> // 初期化キャプチャでのパック展開</ span >
226
226
227
227
< span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span > < span class ="c1 "> // ラムダ式内で、パックを使う例</ span >
228
228
@@ -264,7 +264,7 @@ <h2>例</h2>
264
264
265
265
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> class</ span > < span class ="p "> ...</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span >
266
266
< span class ="k "> auto</ span > < span class ="n "> f</ span > < span class ="p "> (</ span > < span class ="n "> Args</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
267
- < span class ="k "> return</ span > < span class ="p "> [...</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > move </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )]</ span > < span class ="p "> {</ span > < span class ="c1 "> // 初期化キャプチャでのパック展開</ span >
267
+ < span class ="k "> return</ span > < span class ="p "> [...</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> < a href =" ../../reference/algorithm/move.html " > std::move </ a > </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )]</ span > < span class ="p "> {</ span > < span class ="c1 "> // 初期化キャプチャでのパック展開</ span >
268
268
269
269
< span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span > < span class ="c1 "> // ラムダ式内で、init-capture パック(args)を使う例</ span >
270
270
@@ -295,7 +295,7 @@ <h2>この機能が必要になった背景・経緯</h2>
295
295
< p > 例えば、上記の例にある関数 < code > f</ code > は、C++17 以前では次のように書く必要がある。</ p >
296
296
< p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> class</ span > < span class ="p "> ...</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span >
297
297
< span class ="k "> auto</ span > < span class ="n "> f</ span > < span class ="p "> (</ span > < span class ="n "> Args</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
298
- < span class ="p "> [</ span > < span class ="n "> tup</ span > < span class ="o "> =</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> make_tuple</ span > < span class ="p "> (</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > move </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )...)]</ span > < span class ="p "> {</ span >
298
+ < span class ="p "> [</ span > < span class ="n "> tup</ span > < span class ="o "> =</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> make_tuple</ span > < span class ="p "> (</ span > < span class ="n "> < a href =" ../../reference/algorithm/move.html " > std::move </ a > </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )...)]</ span > < span class ="p "> {</ span >
299
299
< span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> apply</ span > < span class ="p "> ([](</ span > < span class ="k "> auto</ span > < span class ="k "> const</ span > < span class ="o "> &</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="n "> < a href ="../cpp14/decltype_auto.html "> decltype(auto)</ a > </ span > < span class ="p "> {</ span >
300
300
< span class ="k "> return</ span > < span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span >
301
301
< span class ="p "> },</ span > < span class ="n "> tup</ span > < span class ="p "> );</ span >
@@ -316,7 +316,7 @@ <h2>検討されたほかの選択肢</h2>
316
316
< p > P0780R2 のひとつ前のリビジョンである < a href ="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r1.html " target ="_blank "> P0780R1</ a > では、 < code > ...</ code > 記号の位置が、</ p >
317
317
< p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="n "> class</ span > < span class ="p "> ...</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span >
318
318
< span class ="k "> auto</ span > < span class ="n "> f</ span > < span class ="p "> (</ span > < span class ="n "> Args</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
319
- < span class ="p "> [</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> std </ span > < span class =" o " > :: </ span > < span class =" n " > move </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )...]</ span > < span class ="p "> {</ span >
319
+ < span class ="p "> [</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="n "> < a href =" ../../reference/algorithm/move.html " > std::move </ a > </ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )...]</ span > < span class ="p "> {</ span >
320
320
< span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span >
321
321
< span class ="p "> };</ span >
322
322
< span class ="p "> }</ span >
0 commit comments