201201 < p class ="text-right "> < small >
202202 最終更新日時:
203203 < time itemprop ="datePublished " class ="js-local-time "
204- datetime ="2025-07-09T00:33:39 +09:00 ">
205- 2025年07月09日 00時33分39秒 (JST)
204+ datetime ="2026-08-17T16:10:42 +09:00 ">
205+ 2026年08月17日 16時10分42秒 (JST)
206206 </ time >
207207 < br />
208208 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -274,12 +274,12 @@ <h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成
274274</ ul >
275275< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる "> 適格要件</ a > </ h2 >
276276< ul >
277- < li > (1), (2) : 型< code > U</ code > を< code > < a href ="../../type_traits/remove_cvref.html "> remove_cvref_t</ a > << a href ="../../type_traits/invoke_result.html "> invoke_result_t</ a > <F, decltype(< a href ="value .html "> value() </ a > )>></ code > としたとき、次を全て満たすこと< ul >
277+ < li > (1), (2) : 型< code > U</ code > を< code > < a href ="../../type_traits/remove_cvref.html "> remove_cvref_t</ a > << a href ="../../type_traits/invoke_result.html "> invoke_result_t</ a > <F, decltype(< a href ="op_deref .html "> **this </ a > )>></ code > としたとき、次を全て満たすこと< ul >
278278< li > < code > U</ code > が< code > expected</ code > の特殊化である</ li >
279279< li > < code > < a href ="../../type_traits/is_same.html "> is_same_v</ a > <U::error_type, E> == true</ code > </ li >
280280</ ul >
281281</ li >
282- < li > (3), (4) : 型< code > U</ code > を< code > < a href ="../../type_traits/remove_cvref.html "> remove_cvref_t</ a > << a href ="../../type_traits/invoke_result.html "> invoke_result_t</ a > <F, decltype(< a href ="../../utility/move.html "> std::move</ a > (< a href ="value .html "> value() </ a > ))>></ code > としたとき、次を全て満たすこと< ul >
282+ < li > (3), (4) : 型< code > U</ code > を< code > < a href ="../../type_traits/remove_cvref.html "> remove_cvref_t</ a > << a href ="../../type_traits/invoke_result.html "> invoke_result_t</ a > <F, decltype(< a href ="../../utility/move.html "> std::move</ a > (< a href ="op_deref .html "> **this </ a > ))>></ code > としたとき、次を全て満たすこと< ul >
283283< li > < code > U</ code > が< code > expected</ code > の特殊化である</ li >
284284< li > < code > < a href ="../../type_traits/is_same.html "> is_same_v</ a > <U::error_type, E> == true</ code > </ li >
285285</ ul >
@@ -291,7 +291,7 @@ <h2>効果</h2>
291291< p > (1), (2) : 次の処理と等価
292292 < br />
293293< div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="has_value.html "> has_value</ a > </ span > < span class ="p "> ())</ span >
294- < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../functional/invoke.html "> invoke</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> f</ span > < span class ="p "> ),</ span > < span class ="w "> </ span > < span class ="n "> < a href ="value .html "> value() </ a > </ span > < span class ="p "> );</ span >
294+ < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../functional/invoke.html "> invoke</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> f</ span > < span class ="p "> ),</ span > < span class ="w "> </ span > < span class ="n "> < a href ="op_deref .html "> **this </ a > </ span > < span class ="p "> );</ span >
295295< span class ="k "> else</ span >
296296< span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> U</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../unexpect_t.html "> unexpect</ a > </ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="error.html "> error()</ a > </ span > < span class ="p "> );</ span >
297297</ code > </ pre > </ div >
@@ -301,7 +301,7 @@ <h2>効果</h2>
301301< p > (3), (4) : 次の処理と等価
302302 < br />
303303< div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> if</ span > < span class ="w "> </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="has_value.html "> has_value</ a > </ span > < span class ="p "> ())</ span >
304- < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../functional/invoke.html "> invoke</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> f</ span > < span class ="p "> ),</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../utility/move.html "> std::move</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="value .html "> value() </ a > </ span > < span class ="p "> ));</ span >
304+ < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../functional/invoke.html "> invoke</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> F</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> f</ span > < span class ="p "> ),</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../utility/move.html "> std::move</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="op_deref .html "> **this </ a > </ span > < span class ="p "> ));</ span >
305305< span class ="k "> else</ span >
306306< span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> U</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../unexpect_t.html "> unexpect</ a > </ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../../utility/move.html "> std::move</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="error.html "> error()</ a > </ span > < span class ="p "> ));</ span >
307307</ code > </ pre > </ div >
@@ -361,6 +361,10 @@ <h2>関連項目</h2>
361361< h2 > 参照</ h2 >
362362< ul >
363363< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html " target ="_blank "> P2505R5 Monadic Functions for < code > std::expected</ code > </ a > </ li >
364+ < li > < a href ="https://cplusplus.github.io/LWG/issue3938 " target ="_blank "> LWG Issue 3938. Cannot use < code > std::expected</ code > monadic ops with move-only < code > error_type</ code > </ a > < ul >
365+ < li > C++26で、効果および< a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる "> 適格要件</ a > で正常値へのアクセスに< code > < a href ="value.html "> value()</ a > </ code > ではなく< code > < a href ="op_deref.html "> **this</ a > </ code > を使うよう修正され、ムーブのみ可能な< code > error_type</ code > でも使用できるようになった</ li >
366+ </ ul >
367+ </ li >
364368</ ul > </ div >
365369
366370 </ div >
0 commit comments