188188
189189 < p class ="text-right "> < small >
190190 最終更新日時(UTC):
191- < span itemprop ="datePublished " content ="2025-07-14T14:04:00 ">
192- 2025年07月14日 14時04分00秒
191+ < span itemprop ="datePublished " content ="2026-03-12T02:15:34 ">
192+ 2026年03月12日 02時15分34秒
193193 </ span >
194194 < br />
195195 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
196- < span itemprop ="name "> Koichi Murase </ span >
196+ < span itemprop ="name "> Akira Takahashi </ span >
197197 </ span >
198198 が更新
199199 </ small > </ p >
221221< span class ="w "> </ span > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> F</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="tuple-like.html "> tuple-like</ a > </ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> ></ span >
222222< span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../lang/cpp14/decltype_auto.html "> decltype(auto)</ a > </ span >
223223< span class ="w "> </ span > < span class ="n "> apply</ span > < span class ="p "> (</ span > < span class ="n "> F</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> f</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> t</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> < i > see below</ i > </ span > < span class ="p "> );</ span > < span class ="w "> </ span > < span class ="c1 "> // (1) C++23</ span >
224+
225+ < span class ="w "> </ span > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> F</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="tuple-like.html "> tuple-like</ a > </ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> ></ span >
226+ < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/apply_result.html "> apply_result_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> ></ span >
227+ < span class ="w "> </ span > < span class ="n "> apply</ span > < span class ="p "> (</ span > < span class ="n "> F</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> f</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> t</ span > < span class ="p "> )</ span >
228+ < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../type_traits/is_nothrow_applicable.html "> is_nothrow_applicable_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> Tuple</ span > < span class ="o "> ></ span > < span class ="p "> );</ span > < span class ="w "> </ span > < span class ="c1 "> // (1) C++26</ span >
224229< span class ="p "> }</ span >
225230</ code > </ pre > </ div >
226231</ p >
@@ -256,7 +261,10 @@ <h2>効果</h2>
256261< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
257262< p > 適用した関数呼び出しの< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ p >
258263< h2 > < a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > </ h2 >
259- < p > C++23から : < code > I</ code > をパラメータパック< code > 0, 1, ..., (< a href ="tuple_size.html "> tuple_size_v</ a > << a href ="../type_traits/remove_reference.html "> remove_reference_t</ a > <Tuple>>-1)</ code > としたとき、< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > 指定の式は次と等価 : < code > noexcept(< a href ="../functional/invoke.html "> invoke</ a > (std::forward<F>(f), get<I>(std::forward<Tuple>(t))...))</ code > </ p >
264+ < ul >
265+ < li > C++23から : < code > I</ code > をパラメータパック< code > 0, 1, ..., (< a href ="tuple_size.html "> tuple_size_v</ a > << a href ="../type_traits/remove_reference.html "> remove_reference_t</ a > <Tuple>>-1)</ code > としたとき、< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > 指定の式は次と等価 : < code > noexcept(< a href ="../functional/invoke.html "> invoke</ a > (std::forward<F>(f), get<I>(std::forward<Tuple>(t))...))</ code > </ li >
266+ < li > C++26から : < a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > 指定は< code > < a href ="../type_traits/is_nothrow_applicable.html "> is_nothrow_applicable_v</ a > <F, Tuple></ code > </ li >
267+ </ ul >
260268< h2 > 例</ h2 >
261269< p > < div class ="yata " id ="0f83f52f54ed195ecb53102f37878b2e2bdac638 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../iostream.html "> <iostream></ a > </ span >
262270< span class ="cp "> #include < a href ="../tuple.html "> <tuple></ a > </ span >
@@ -299,6 +307,9 @@ <h2>関連項目</h2>
299307< li > < code > < a href ="../tuple.html "> std::tuple</ a > </ code > </ li >
300308< li > < a href ="../concepts/Invoke.html "> INVOKE</ a > </ li >
301309< li > < code > < a href ="tuple-like.html "> tuple-like</ a > </ code > </ li >
310+ < li > < code > < a href ="../type_traits/apply_result.html "> apply_result</ a > </ code > </ li >
311+ < li > < code > < a href ="../type_traits/is_applicable.html "> is_applicable</ a > </ code > </ li >
312+ < li > < code > < a href ="../type_traits/is_nothrow_applicable.html "> is_nothrow_applicable</ a > </ code > </ li >
302313</ ul >
303314< h2 > 参照</ h2 >
304315< ul >
@@ -316,6 +327,10 @@ <h2>参照</h2>
316327< li > C++23から条件付きで< code > noexcept</ code > < a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > 指定が行われる。</ li >
317328</ ul >
318329</ li >
330+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p1317r2.pdf " target ="_blank "> P1317R2 Remove return type deduction in < code > std::apply</ code > </ a > < ul >
331+ < li > C++26から< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > 型が< code > decltype(auto)</ code > から< code > apply_result_t<F, Tuple></ code > に変更され、SFINAEフレンドリーになった。</ li >
332+ </ ul >
333+ </ li >
319334</ ul > </ div >
320335
321336 </ div >
0 commit comments