@@ -222,7 +222,7 @@ <h2>概要</h2>
222222< p > 例えば、関数パラメーターパックをムーブしてキャプチャしようとする際には、次のように書くことができる。</ p >
223223< 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 >
224224< 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 "> < 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 >
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 >
226226
227227 < span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span > < span class ="c1 "> // ラムダ式内で、パックを使う例</ span >
228228
@@ -264,7 +264,7 @@ <h2>例</h2>
264264
265265< 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 >
266266< 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 "> < 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 >
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 >
268268
269269 < 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 >
270270
@@ -295,7 +295,7 @@ <h2>この機能が必要になった背景・経緯</h2>
295295< p > 例えば、上記の例にある関数 < code > f</ code > は、C++17 以前では次のように書く必要がある。</ p >
296296< 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 >
297297< 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 "> < 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 >
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 >
299299 < 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 >
300300 < span class ="k "> return</ span > < span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span >
301301 < span class ="p "> },</ span > < span class ="n "> tup</ span > < span class ="p "> );</ span >
@@ -316,7 +316,7 @@ <h2>検討されたほかの選択肢</h2>
316316< p > P0780R2 のひとつ前のリビジョンである < a href ="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r1.html " target ="_blank "> P0780R1</ a > では、 < code > ...</ code > 記号の位置が、</ p >
317317< 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 >
318318< 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 "> < 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 >
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 >
320320 < span class ="n "> g</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> ...);</ span >
321321 < span class ="p "> };</ span >
322322< span class ="p "> }</ span >
0 commit comments