200200
201201 < p class ="text-right "> < small >
202202 最終更新日時(UTC):
203- < span itemprop ="datePublished " content ="2025 -06-11T14:18:15 ">
204- 2025年06月11日 14時18分15秒
203+ < span itemprop ="datePublished " content ="2026 -06-10T07:27:25 ">
204+ 2026年06月10日 07時27分25秒
205205 </ span >
206206 < br />
207207 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
208- < span itemprop ="name "> Raclamusi </ span >
208+ < span itemprop ="name "> Akira Takahashi </ span >
209209 </ span >
210210 が更新
211211 </ small > </ p >
236236< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="o "> ~</ span > < span class ="n "> reference</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
237237< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="k "> operator</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="kt "> bool</ span > < span class ="w "> </ span > < span class ="n "> x</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
238238< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="k "> operator</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="o "> &</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
239+ < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="k "> operator</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="kt "> bool</ span > < span class ="w "> </ span > < span class ="n "> x</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="c1 "> // C++26</ span >
239240< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="kt "> bool</ span > < span class ="w "> </ span > < span class ="k "> operator</ span > < span class ="o "> ~</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
240241< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="k "> operator</ span > < span class ="w "> </ span > < span class ="kt "> bool</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="k "> const</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
241242< span class ="w "> </ span > < span class ="n "> < i > CONSTEXPR</ i > </ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="n "> flip</ span > < span class ="p "> ()</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span >
243+
244+ < span class ="w "> </ span > < span class ="k "> friend</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> void</ span > < span class ="w "> </ span > < span class ="nf "> swap</ span > < span class ="p "> (</ span > < span class ="n "> reference</ span > < span class ="w "> </ span > < span class ="n "> x</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="w "> </ span > < span class ="n "> y</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="c1 "> // C++26</ span >
245+ < span class ="w "> </ span > < span class ="k "> friend</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> void</ span > < span class ="w "> </ span > < span class ="nf "> swap</ span > < span class ="p "> (</ span > < span class ="n "> reference</ span > < span class ="w "> </ span > < span class ="n "> x</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="kt "> bool</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="n "> y</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="c1 "> // C++26</ span >
246+ < span class ="w "> </ span > < span class ="k "> friend</ span > < span class ="w "> </ span > < span class ="k "> constexpr</ span > < span class ="w "> </ span > < span class ="kt "> void</ span > < span class ="w "> </ span > < span class ="nf "> swap</ span > < span class ="p "> (</ span > < span class ="kt "> bool</ span > < span class ="o "> &</ span > < span class ="w "> </ span > < span class ="n "> x</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="n "> reference</ span > < span class ="w "> </ span > < span class ="n "> y</ span > < span class ="p "> )</ span > < span class ="w "> </ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="c1 "> // C++26</ span >
242247< span class ="w "> </ span > < span class ="p "> };</ span >
243248< span class ="w "> </ span > < span class ="p "> };</ span >
244249< span class ="p "> }</ span >
247252< h2 > 概要</ h2 >
248253< p > < code > bitset::reference</ code > は、< code > bitset</ code > の各ビットにアクセスするためのプロキシクラスである。< code > bitset::< a href ="op_at.html "> operator[]</ a > </ code > で返されるビット情報を取得、書き換えるためにある。</ p >
249254< p > C++23から< code > bitset::reference</ code > 全メンバ関数への< code > constexpr</ code > 指定が行われる。</ p >
255+ < p > C++26から、< code > const</ code > 修飾された< code > *this</ code > に対する< code > bool</ code > からの代入演算子と、< a class ="cpprefjp-defined-word " data-desc ="実引数依存の名前探索 (Argument Dependent Lookup)。引数の型が所属する名前空間の関数を探索する言語機能 "> ADL</ a > で見つかる非メンバ< code > swap</ code > 関数が追加され、< code > < a href ="../../vector/vector.html "> vector<bool>::reference</ a > </ code > とインタフェースが統一された。</ p >
250256< h3 > メンバ関数</ h3 >
251257< table border ="1 " bordercolor ="#888 " style ="border-collapse:collapse ">
252258< thead >
@@ -268,6 +274,11 @@ <h3>メンバ関数</h3>
268274< td > </ td >
269275</ tr >
270276< tr >
277+ < td > < code > operator=(bool x) const</ code > </ td >
278+ < td > < code > const</ code > な< code > *this</ code > のビット情報を書き換える</ td >
279+ < td > C++26</ td >
280+ </ tr >
281+ < tr >
271282< td > < code > operator~()</ code > </ td >
272283< td > 反転したビットを取得する</ td >
273284< td > </ td >
@@ -284,6 +295,33 @@ <h3>メンバ関数</h3>
284295</ tr >
285296</ tbody >
286297</ table >
298+ < h3 > 非メンバ関数</ h3 >
299+ < table border ="1 " bordercolor ="#888 " style ="border-collapse:collapse ">
300+ < thead >
301+ < tr >
302+ < th > 名前</ th >
303+ < th > 説明</ th >
304+ < th > 対応バージョン</ th >
305+ </ tr >
306+ </ thead >
307+ < tbody >
308+ < tr >
309+ < td > < code > swap(reference x, reference y)</ code > </ td >
310+ < td > 2つの参照先のビットを入れ替える</ td >
311+ < td > C++26</ td >
312+ </ tr >
313+ < tr >
314+ < td > < code > swap(reference x, bool& y)</ code > </ td >
315+ < td > 参照先のビットと< code > bool</ code > を入れ替える</ td >
316+ < td > C++26</ td >
317+ </ tr >
318+ < tr >
319+ < td > < code > swap(bool& x, reference y)</ code > </ td >
320+ < td > < code > bool</ code > と参照先のビットを入れ替える</ td >
321+ < td > C++26</ td >
322+ </ tr >
323+ </ tbody >
324+ </ table >
287325< h2 > 例</ h2 >
288326< p > < div class ="yata " id ="a333050fc6cd49b6ef14e8cb4597950e582cef31 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include < a href ="../../cassert.html "> <cassert></ a > </ span >
289327< span class ="cp "> #include < a href ="../../bitset.html "> <bitset></ a > </ span >
@@ -314,6 +352,10 @@ <h3>出力</h3>
314352< h2 > 参照</ h2 >
315353< ul >
316354< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2417r2.pdf " target ="_blank "> P2417R2 A more constexpr bitset</ a > </ li >
355+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3612r1.html " target ="_blank "> P3612R1 Harmonize proxy-reference operations (LWG 3638 and 4187)</ a > < ul >
356+ < li > C++26で、< code > const</ code > 修飾された< code > *this</ code > に対する< code > bool</ code > からの代入演算子と、< a class ="cpprefjp-defined-word " data-desc ="実引数依存の名前探索 (Argument Dependent Lookup)。引数の型が所属する名前空間の関数を探索する言語機能 "> ADL</ a > で見つかる非メンバ< code > swap</ code > 関数が追加された</ li >
357+ </ ul >
358+ </ li >
317359</ ul > </ div >
318360
319361 </ div >
0 commit comments