66* cpp26[ meta cpp]
77
88``` cpp
9+ void * operator new (size_t size); // (1)
10+
911template <class ... Args>
10- void* operator new(size_t size, const Args&... args);
12+ void* operator new(size_t size, const Args&... args); // (2)
13+
14+ template<class This, class Alloc, class... Args>
15+ void* operator new(size_t size, const This&, allocator_arg_t, Alloc alloc, Args&&...); // (3)
1116```
1217
1318## 概要
1419[`task::promise_type`](../promise_type.md)クラスのnew演算子オーバーロード。
1520
16- [`allocator_arg_t`](/reference/memory/allocator_arg_t.md)型のパラメータがなければ、`alloc`を[`allocator_type`](../../task.md)`()`で初期化する。そうでなければ、`arg_next`を最初の`allocator_arg_t`パラメータに続くパラメータとし、`alloc`を`allocator_type(arg_next)`とする。
17-
18- `U`型をサイズおよびアライメントが[`__STDCPP_DEFAULT_NEW_ALIGNMENT__`](/lang/cpp17/predefined_macros.md)である未規定の型としたとき、説明用の`PAlloc`を[`allocator_traits`](/reference/memory/allocator_traits.md)`<PAlloc>::template rebind_alloc<U>`とする。
21+ `U`型をサイズおよびアライメントが[`__STDCPP_DEFAULT_NEW_ALIGNMENT__`](/lang/cpp17/predefined_macros.md)である未規定の型としたとき、説明用の`PAlloc`を[`allocator_traits`](/reference/memory/allocator_traits.md)`<Alloc>::template rebind_alloc<U>`とする。
1922
2023
2124## 適格要件
22- - (もしあれば)最初の[`allocator_arg_t`](/reference/memory/allocator_arg_t.md)型パラメータが最後のパラメータではない。
23- - [`allocator_arg_t`](/reference/memory/allocator_arg_t.md)型のパラメータが存在するとき、[`allocator_type`](../../task.md)`(arg_next)`が妥当な式である。
24- - [`allocator_traits`](/reference/memory/allocator_traits.md)`<PAlloc>::pointer`がポインタ型である。
25+ [`allocator_traits`](/reference/memory/allocator_traits.md)`<PAlloc>::pointer`がポインタ型である。
2526
2627
2728## 効果
28- `PAlloc`型のアロケータ`palloc`を`alloc`で初期化する。
29- サイズ`size`のコルーチンステートに十分なストレージとなる`U`の最小配列ストレージ、および[`operator delete`](op_delete.md)が後で`palloc`と等しいアロケータでこのメモリブロックを解放するのに必要となる未規定の追加ストレージの確保に`palloc`を用いる。
29+ - (2), (3) :
30+ - `PAlloc`型のアロケータ`palloc`を`alloc`で初期化する。
31+ - サイズ`size`のコルーチンステートに十分なストレージとなる`U`の最小配列ストレージ、および[`operator delete`](op_delete.md)が後で`palloc`と等しいアロケータでこのメモリブロックを解放するのに必要となる未規定の追加ストレージの確保に`palloc`を用いる。
3032
3133
3234## 戻り値
33- 確保したストレージへのポインタ
35+ - (1) : `operator new(size,` [`allocator_arg`](/reference/memory/allocator_arg_t.md)`, allocator_type())`
36+ - (2), (3) : 確保したストレージへのポインタ
3437
3538
3639## バージョン
@@ -45,9 +48,9 @@ void* operator new(size_t size, const Args&... args);
4548
4649
4750## 関連項目
48- - [`(constructor)`](op_constructor.md)
4951- [`operator delete`](op_delete.md)
5052
5153
5254## 参照
5355- [P3552R3 Add a Coroutine Task Type](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3552r3.html)
56+ - [P3980R1 Task's Allocator Use](https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3980r1.html)
0 commit comments