Skip to content

Commit 967d060

Browse files
committed
basic_string/reserve: C++26 P2870R3対応 #1241
1 parent 6af4176 commit 967d060

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

reference/string/basic_string/reserve.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
* function[meta id-type]
66

77
```cpp
8-
void reserve(size_type res_arg = 0); // (1) C++03 (C++20で非推奨化)
8+
void reserve(size_type res_arg = 0); // (1)+(2) C++03
9+
10+
void reserve(); // (1) C++20で非推奨化, C++26で削除
911

1012
constexpr void reserve(size_type res_arg); // (2) C++20
1113
```
@@ -29,12 +31,14 @@ constexpr void reserve(size_type res_arg); // (2) C++20
2931
3032
3133
## 備考
32-
- C++03で`reserve`操作でのメモリの縮小ができたことは、以下の問題があった:
33-
- パフォーマンスの罠となっていた。この関数に指定する引数の値を慎重に選ばなければ、予想外の動的な再確保によってパフォーマンスを低下させる原因となっていた
34-
- 移植性の壁になっていた。メモリ縮小は実装に任せられたオプション機能であったため、環境による動作の違いがあった
35-
- [`vector`](/reference/vector/vector.md)と`string`でのコードの汎用化がむずかしくなっていた。[`vector::reserve()`](/reference/vector/vector/reserve.md)はメモリ伸長のみをサポートしていたが、`string`側はメモリ縮小もサポートしていたため、引数の値を計算することが難しかった
36-
- メモリ縮小のためには[`shrink_to_fit()`](shrink_to_fit.md)メンバ関数があるため、そちらと重複する機能をなくすこととした
37-
- これらのことから、C++20では、メモリ縮小を許可しているように見えるデフォルト引数`0`を非推奨化し、メモリ縮小機能を効果から削除した
34+
C++03で`reserve`操作でのメモリの縮小ができたことは、以下の問題があった:
35+
36+
- パフォーマンスの罠となっていた。この関数に指定する引数の値を慎重に選ばなければ、予想外の動的な再確保によってパフォーマンスを低下させる原因となっていた
37+
- 移植性の壁になっていた。メモリ縮小は実装に任せられたオプション機能であったため、環境による動作の違いがあった
38+
- [`vector`](/reference/vector/vector.md)と`string`でのコードの汎用化がむずかしくなっていた。[`vector::reserve()`](/reference/vector/vector/reserve.md)はメモリ伸長のみをサポートしていたが、`string`側はメモリ縮小もサポートしていたため、引数の値を計算することが難しかった
39+
- メモリ縮小のためには[`shrink_to_fit()`](shrink_to_fit.md)メンバ関数があるため、そちらと重複する機能であった
40+
41+
これらのことから、C++20では、メモリ縮小を許可しているように見えるデフォルト引数`0`を非推奨化し、メモリ縮小機能を効果から削除した。
3842
3943
4044
## 例
@@ -70,3 +74,4 @@ int main()
7074
## 参照
7175
- [P0966R1 `string::reserve` Should Not Shrink](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html)
7276
- [P0980R1 Making `std::string` constexpr](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf)
77+
- [P2870R3 Remove `basic_string::reserve()` From C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2870r3.pdf)

0 commit comments

Comments
 (0)