@@ -358,17 +358,19 @@ <h2>備考</h2>
358
358
</ ul >
359
359
< p > となっている。< br />
360
360
なお、この条件は C++14 までは「以下」ではなく「よりも小さい」だったため、最大負荷率の定義と不整合だった。< br />
361
- これは規格の誤りとして C++17 で修正されたが、使用する処理系やそのバージョンによっては以前の「よりも小さい」という条件でしかイテレータの有効性を保証していない可能性があるため、注意が必要である。
362
- - < code > unordered_map</ code > では、キーのハッシュ値に基づいて要素を格納するバケットを決定するため、< code > position</ code > を有効に使用することはできないものと思われる。< br />
363
- 実際、GCC(libstdc++)、および、Clang(libc++) では < code > position</ code > は単に無視される。< br />
364
- 通常は、< code > position</ code > の無いバージョンを使用した方が良いだろう。
365
- - 引数 < code > position</ code > は、C++14 までは間接参照可能(dereferenceable)でなければならない(つまり、< code > < a href ="cend.html "> cend</ a > ()</ code > ではいけない)との記載になっていたが、これは規格の誤りとして C++17 で修正された。< br />
366
- しかし、上記の通り < code > position</ code > は実際には使用されていない可能性が高く、この変更による影響はほぼないと思われる。
367
- - 上記の要件に示したように、< code > first</ code > 、および、< code > last</ code > の参照先の要素は < code > value_type</ code > 型でなければならないとされているが、その要件を満たさなくてももう一つの要件である直接構築可能を満たすだけで十分にライブラリを実装可能と思われる。< br />
368
- 実際、Clang(libc++) は < code > first</ code > 、および、< code > last</ code > の参照先の要素が < code > value_type</ code > 型でなくとも (7) の形式を使用可能である。
369
- - C++17 で追加された < code > < a href ="try_emplace.html "> try_emplace</ a > </ code > と異なり、これらの関数ではキー重複によって要素の挿入が行われなかった場合に引数が不変である(引数からのムーブが発生しない)という< strong > 保証はない</ strong > ので、注意すること。
370
- - (9), (10) の場合、要素はコピーもムーブもされない。</ p >
361
+ これは規格の誤りとして C++17 で修正されたが、使用する処理系やそのバージョンによっては以前の「よりも小さい」という条件でしかイテレータの有効性を保証していない可能性があるため、注意が必要である。</ p >
371
362
</ li >
363
+ < li >
364
+ < p > < code > unordered_map</ code > では、キーのハッシュ値に基づいて要素を格納するバケットを決定するため、< code > position</ code > を有効に使用することはできないものと思われる。< br />
365
+ 実際、GCC(libstdc++)、および、Clang(libc++) では < code > position</ code > は単に無視される。< br />
366
+ 通常は、< code > position</ code > の無いバージョンを使用した方が良いだろう。</ p >
367
+ </ li >
368
+ < li > 引数 < code > position</ code > は、C++14 までは間接参照可能(dereferenceable)でなければならない(つまり、< code > < a href ="cend.html "> cend</ a > ()</ code > ではいけない)との記載になっていたが、これは規格の誤りとして C++17 で修正された。< br />
369
+ しかし、上記の通り < code > position</ code > は実際には使用されていない可能性が高く、この変更による影響はほぼないと思われる。</ li >
370
+ < li > 上記の要件に示したように、< code > first</ code > 、および、< code > last</ code > の参照先の要素は < code > value_type</ code > 型でなければならないとされているが、その要件を満たさなくてももう一つの要件である直接構築可能を満たすだけで十分にライブラリを実装可能と思われる。< br />
371
+ 実際、Clang(libc++) は < code > first</ code > 、および、< code > last</ code > の参照先の要素が < code > value_type</ code > 型でなくとも (7) の形式を使用可能である。</ li >
372
+ < li > C++17 で追加された < code > < a href ="try_emplace.html "> try_emplace</ a > </ code > と異なり、これらの関数ではキー重複によって要素の挿入が行われなかった場合に引数が不変である(引数からのムーブが発生しない)という< strong > 保証はない</ strong > ので、注意すること。</ li >
373
+ < li > (9), (10) の場合、要素はコピーもムーブもされない。</ li >
372
374
</ ul >
373
375
< h2 > 例</ h2 >
374
376
< p > < div class ="yata " id ="f6a2873dbc43f822a661ad6bb47cf61f16ecfd2d "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
0 commit comments