Skip to content

Commit 0eca2a4

Browse files
committed
polymorphic_allocator : C++26対応としてdestroyの非推奨を取り消し (close #1330)
1 parent a485eae commit 0eca2a4

File tree

2 files changed

+3
-14
lines changed

2 files changed

+3
-14
lines changed

reference/memory_resource/polymorphic_allocator.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ C++20にてC++プログラミングにおいての基礎部品となる型(*vo
4646
| 名前 | 説明 | 対応バージョン |
4747
|-----------------|----------------|----------------|
4848
| [`construct`](polymorphic_allocator/construct.md) | 指定された領域にオブジェクトを構築する | C++17 |
49-
| [`destroy`](polymorphic_allocator/destroy.md) | 指定された領域のオブジェクトを破棄する | C++17<br/>C++20より非推奨 |
49+
| [`destroy`](polymorphic_allocator/destroy.md) | 指定された領域のオブジェクトを破棄する | C++17 |
5050
| [`new_object`](polymorphic_allocator/new_object.md) | メモリを確保し指定した型の構築(`new`式相当の処理)を行う | C++20 |
5151
| [`delete_object`](polymorphic_allocator/delete_object.md) | 指定した型の破棄とそのメモリ領域の解放(`delete`式相当の処理)を行う | C++20 |
5252

reference/memory_resource/polymorphic_allocator/destroy.md

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@
44
* std::pmr[meta namespace]
55
* polymorphic_allocator[meta class]
66
* cpp17[meta cpp]
7-
* cpp20deprecated[meta cpp]
87

98
```cpp
109
template <class T>
1110
void destroy(T* p);
1211
```
1312
14-
この関数はC++20で非推奨となった。不要な機能ではあるが、代わりが必要であれば[`allocator_traits<Alloc>::destroy()`](/reference/memory/allocator_traits/destroy.md)もしくは[`destroy_at()`](/reference/memory/destroy_at.md)を使用すること。
15-
16-
1713
## 概要
1814
指定された領域にある`T`のオブジェクトを破棄する。
1915
@@ -25,15 +21,6 @@ void destroy(T* p);
2521
2622
メモリ領域の解放は行われないため、別に[`deallocate`](deallocate.md)で行う必要がある。
2723
28-
## 非推奨の詳細
29-
30-
`polymorphic_allocator`も含めたアロケータはコンテナから利用される際に`allocator_traits`を介して利用され、`allocator_traits`の提供するデフォルト実装によってアロケータとしての多くの部分が補われる。
31-
32-
本関数は、[`allocator_traits<Alloc>::destroy()`](/reference/memory/allocator_traits/destroy.md)で提供されているデフォルト実装と完全に同一の実装となっており、追加の事を何もしていない。従って有用性は何もなく、非推奨とされた。
33-
34-
おそらく、[`construct()`](construct.md)メンバ関数との対称性を意識して追加されていたものと思われる。なお、`construct()`メンバ関数は[uses-allocator 構築](/reference/memory/uses_allocator.md)のために追加の仕事を担っており、こちらの関数には有用であるため非推奨とはされていない。
35-
36-
`allocator_traits`を介して`polymorphic_allocator`を使用する場合は本関数の有無を気にする必要はないが、もし本関数が必要となった場合は代わりに[`destroy_at()`](/reference/memory/destroy_at.md)を利用できる。
3724
3825
## 例
3926
```cpp example
@@ -98,3 +85,5 @@ int main()
9885
- [Working Draft, C++ Extensions for Library Fundamentals, Version 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4562.html#memory.resource.synop)
9986
- [destroy: Missing member function of std::pmr::polymorphic_allocator - Developer Community](https://developercommunity.visualstudio.com/content/problem/394908/destroy-missing-member-function-of-stdpmrpolymorph.html)
10087
- [LWG Issue 3036. `polymorphic_allocator::destroy` is extraneous](https://cplusplus.github.io/LWG/issue3036)
88+
- [P2875R4 Undeprecate `polymorphic_allocator::destroy` for C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2875r4.pdf)
89+
- この関数はC++20で一度非推奨となったが、C++26で非推奨が取り消された。ただし、[`allocator_traits<Alloc>::destroy()`](/reference/memory/allocator_traits/destroy.md)関数や[`destroy_at()`](/reference/memory/destroy_at.md)関数で同等のことができる

0 commit comments

Comments
 (0)