Skip to content

Commit c3e97ea

Browse files
committed
allocator : C++26対応としてis_always_equalを削除 (close #1242)
1 parent 1fe3de6 commit c3e97ea

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

reference/memory/allocator.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ C++11から:
6464
| `reference` | 要素の参照型 `T&` | C++17から非推奨<br/> C++20で削除 |
6565
| `const_reference` | 読み取り専用の要素の参照型 `const T&` | C++17から非推奨<br/> C++20で削除 |
6666
| `rebind<U>` |`U`を確保するように再束縛する | C++17から非推奨<br/> C++20で削除 |
67-
| `is_always_equal` | 同じ型のアロケータオブジェクトが2つある場合、それらが常に同値であるか。[`true_type`](/reference/type_traits/true_type.md) | C++17 |
67+
| `is_always_equal` | 同じ型のアロケータオブジェクトが2つある場合、それらが常に同値であるか。[`true_type`](/reference/type_traits/true_type.md) | C++17<br/> C++20で非推奨<br/> C++26で削除 |
6868

6969

7070
## 非メンバ関数
@@ -87,6 +87,9 @@ C++11から:
8787
- なお、プライマリテンプレートからインスタンス化されるようになっても`allocate`/`deallocate`メンバは内部で`sizeof(void)`を要求するため引き続き使用不可能であり、`std::allocator<void>`の使用用途としては従来と同じく再束縛を目的とすることになる(上述のように[`std::allocator_traits`](allocator_traits.md)の代替機能を用いて`typename` [`std::allocator_traits`](allocator_traits.md)`<std::allocator<void>>::template rebind_alloc<R>`のようにする)。
8888

8989
- メンバ型の`size_type``difference_type`は、C++17で非推奨となったがC++20で非推奨が取り消された。
90+
- メンバ型の`is_always_equal`は、このクラスを継承したメモリアロケータが`is_always_equal`の値を引き継いでしまうという点で問題があったため、C++20で非推奨となり、C++26で削除された。
91+
- 代わりに[`std::allocator_traits`](allocator_traits.md)クラスの`is_always_equal`メンバ型を使用すること。
92+
9093

9194
##
9295
```cpp example
@@ -140,3 +143,7 @@ int main(int argc, char** argv) {
140143
- [P0174R2 Deprecating Vestigial Library Parts in C++17](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html)
141144
- [P0619R4 Reviewing deprecated facilities of C++17 for C++20](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html)
142145
- [N4258 Cleaning-up noexcept in the Library, Rev 3](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf)
146+
- [LWG Issue 3170. `is_always_equal` added to `std::allocator` makes the standard library treat derived types as always equal](https://cplusplus.github.io/LWG/issue3170)
147+
- C++20で`is_always_equal`メンバ型が非推奨化された
148+
- [P2868R3 Remove Deprecated `std::allocator` Typedef From C++26](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2868r3.pdf)
149+
- C++26で`is_always_equal`メンバ型が削除された

0 commit comments

Comments
 (0)