189189 < p class ="text-right "> < small >
190190 最終更新日時:
191191 < time itemprop ="datePublished " class ="js-local-time "
192- datetime ="2026-02-08T18:00:28 +09:00 ">
193- 2026年02月08日 18時00分28秒 (JST)
192+ datetime ="2026-08-19T21:05:34 +09:00 ">
193+ 2026年08月19日 21時05分34秒 (JST)
194194 </ time >
195195 < br />
196196 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
197- < span itemprop ="name "> yoh </ span >
197+ < span itemprop ="name "> Akira Takahashi </ span >
198198 </ span >
199199 が更新
200200 </ small > </ p >
238238
239239 < div class ="identifier-type "> function</ div > < div class ="header "> <exposition-only></ div > < h1 class ="exposition-only " itemprop ="name "> < span class ="token "> decay-copy</ span > < span class ="cpp cpp20 " title ="C++20で追加 "> (C++20)</ span > < span class ="cpp exposition-only " title ="説明専用 "> </ span > </ h1 >
240240< div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
241- < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ span > < span class ="w "> </ span > < span class ="n "> < i > decay-copy</ i > </ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> v</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../type_traits/is_nothrow_convertible.html "> is_nothrow_convertible_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> >></ span > < span class ="p "> )</ span >
242- < span class ="p "> {</ span >
243- < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> v</ span > < span class ="p "> );</ span >
244- < span class ="p "> }</ span >
241+ < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ span > < span class ="w "> </ span > < span class ="n "> < i > decay-copy</ i > </ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> v</ span > < span class ="p "> )</ span >
242+ < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../type_traits/is_nothrow_convertible.html "> is_nothrow_convertible_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> >></ span > < span class ="p "> );</ span > < span class ="w "> </ span > < span class ="c1 "> // (1) C++20</ span >
243+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> T</ span > < span class ="o "> ></ span >
244+ < span class ="w "> </ span > < span class ="k "> requires</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../concepts/convertible_to.html "> convertible_to</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> >></ span >
245+ < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ span > < span class ="w "> </ span > < span class ="n "> < i > decay-copy</ i > </ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="n "> v</ span > < span class ="p "> )</ span >
246+ < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../type_traits/is_nothrow_convertible.html "> is_nothrow_convertible_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../type_traits/decay.html "> decay_t</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> >></ span > < span class ="p "> );</ span > < span class ="w "> </ span > < span class ="c1 "> // (1) C++23</ span >
245247</ code > </ pre > </ div >
246248</ p >
247249< h2 > 概要</ h2 >
@@ -257,6 +259,11 @@ <h2>概要</h2>
257259< span class ="kt "> int</ span > < span class ="w "> </ span > < span class ="nf "> f</ span > < span class ="p "> (){</ span > < span class ="w "> </ span > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> g</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="p "> }</ span >
258260</ code > </ pre > </ div >
259261</ p >
262+ < h2 > 効果</ h2 >
263+ < p > 以下と等価である:</ p >
264+ < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> return</ span > < span class ="w "> </ span > < span class ="n "> < a href ="../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> T</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> v</ span > < span class ="p "> );</ span >
265+ </ code > </ pre > </ div >
266+ </ p >
260267< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > </ h2 >
261268< p > 式< code > decay-copy(v)</ code > の値は次のようになる。</ p >
262269< ol >
@@ -274,6 +281,10 @@ <h2>参照</h2>
274281< ul >
275282< li > < a href ="https://timsong-cpp.github.io/cppwp/n4861/expos.only.func " target ="_blank "> N4861 16.4.2.1 Exposition-only functions</ a > </ li >
276283< li > < a href ="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3255.html " target ="_blank "> N3255 C++ Decay Copy</ a > 実際の関数として提案しているが、採用には至っていない。</ li >
284+ < li > < a href ="https://cplusplus.github.io/LWG/issue3724 " target ="_blank "> LWG Issue 3724. decay-copy should be constrained</ a > < ul >
285+ < li > C++23で、< code > decay-copy</ code > に< code > convertible_to<T, decay_t<T>></ code > 制約が追加され、変換できない型に対してSFINAEフレンドリー(ill-formed)になった</ li >
286+ </ ul >
287+ </ li >
277288</ ul > </ div >
278289
279290 </ div >
0 commit comments