Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
4dd2ac8
C++20機能テストマクロ : `__cpp_lib_constexpr_algorithms`がutilityヘッダでも定義されることになった
faithandbrave Aug 18, 2026
18c04d2
C++23機能テストマクロ : LWG Issueを追加
faithandbrave Aug 18, 2026
bb71764
ranges::rotate_copy : LWG Issueを記載
faithandbrave Aug 18, 2026
9edfd6a
atomicの非メンバ関数版のwait / notify系 : noexceptが追加された
faithandbrave Aug 18, 2026
9b93de5
zoned_time向けformatterのformatメンバ関数がconstになった
faithandbrave Aug 18, 2026
9252749
reference_wrapperの関数呼び出し演算子 : 条件付きnoexceptが追加された
faithandbrave Aug 18, 2026
aff52d8
(shared_)futureの代入演算子 : 自己代入への言及が追加された
faithandbrave Aug 18, 2026
044d4c2
generator::iteratorのoperator== : LWG Issueを追加
faithandbrave Aug 18, 2026
386f336
fpos : 等値比較の戻り値がC++23で変更された
faithandbrave Aug 18, 2026
1084b6f
istream_iteratorのコンストラクタ : コピーコンストラクタの条件付きnoexceptを追加
faithandbrave Aug 19, 2026
e560be5
(make_)const_sentinel : LWG Issueを追加
faithandbrave Aug 19, 2026
6d194b3
disable_sized_sentinel_for : move_iteratorに対する特殊化を追加
faithandbrave Aug 19, 2026
5f3c045
inout_ptr_tのデストラクタ : release-statementがブロックの外側に移動
faithandbrave Aug 19, 2026
b580577
pointer_traits : C++23からSFINAEフレンドリーになった
faithandbrave Aug 19, 2026
340845d
ranges::destroy_n, uninitialized_(copy | move)_n : 入力イテレータがコピー可能とは限らな…
faithandbrave Aug 19, 2026
c0942d9
optionalの三方比較演算子 : 制約を追加
faithandbrave Aug 19, 2026
6079eb5
certesian_product_viewのbegin / end : LWG Issueを追加
faithandbrave Aug 19, 2026
508047b
iota_viewのコンストラクタ : 符号なし整数のオーバーフローに対処する事前条件を追加
faithandbrave Aug 19, 2026
22e3ffd
take_viewのコンストラクタ : 事前条件を追加
faithandbrave Aug 19, 2026
b75b273
view_interface::size : 符号なし整数型に変換して返すようになった
faithandbrave Aug 19, 2026
ca2f990
ranges::to : LWG Issueを追加
faithandbrave Aug 19, 2026
371fb0f
ranges::tuple-for-each : LWG Issueを追加
faithandbrave Aug 19, 2026
81d0abf
zip_transform_view : LWG issueを追加
faithandbrave Aug 19, 2026
9fdac98
error_codeのコンストラクタ : LWG Issueを追加
faithandbrave Aug 19, 2026
8f2eeb4
jthreadの代入演算子 : 自己代入への言及を追加
faithandbrave Aug 19, 2026
7b6713d
forward_like : 適格要件を追加
faithandbrave Aug 19, 2026
b5f6adb
flat_set : LWG Issueを追加
faithandbrave Aug 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion lang/cpp20/feature_test_macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
|`__cpp_lib_char8_t`|`201811L`<br/>`201907L`|`char8_t`に対する特殊化の追加|[`<atomic>`](/reference/atomic.md)<br/>[`<filesystem>`](/reference/filesystem.md)<br/>[`<iosfwd>`](/reference/iosfwd.md)<br/>[`<istream>`](/reference/istream.md)<br/>[`<limits>`](/reference/limits.md)<br/>[`<locale>`](/reference/locale.md)<br/>[`<ostream>`](/reference/ostream.md)<br/>[`<string>`](/reference/string.md)<br/>[`<string_view>`](/reference/string_view.md)|
|`__cpp_lib_chrono`|`201907L`|カレンダーとタイムゾーン|[`<chrono>`](/reference/chrono.md)|
|`__cpp_lib_concepts`|`202002L`|[`<concepts>`](/reference/concepts.md)の追加|[`<concepts>`](/reference/concepts.md)|
|`__cpp_lib_constexpr_algorithms`|`201806L`|多くのアルゴリズムに`constexpr`を追加|[`<algorithm>`](/reference/algorithm.md)|
|`__cpp_lib_constexpr_algorithms`|`201806L`|多くのアルゴリズムに`constexpr`を追加|[`<algorithm>`](/reference/algorithm.md)<br/>[`<utility>`](/reference/utility.md)|
|`__cpp_lib_constexpr_complex`|`201711L`|[`std::complex`](/reference/complex/complex.md)の`constexpr`対応|[`<complex>`](/reference/complex.md)|
|`__cpp_lib_constexpr_dynamic_alloc`|`201907L`|[`std::destroy_at`](/reference/memory/destroy_at.md)ファミリと[`std::allocator`](/reference/memory/allocator.md)/[`std::allocator_traits`](/reference/memory/allocator_traits.md)の`constexpr`対応<br/>[`std::construct_at`](/reference/memory/construct_at.md)|[`<memory>`](/reference/memory.md)|
|`__cpp_lib_constexpr_functional`|`201907L`|[`std::invoke`](/reference/functional/invoke.md)、[`std::reference_wrapper`](/reference/functional/reference_wrapper.md)、[`std::not_fn`](/reference/functional/not_fn.md)、[`std::bind_front`](/reference/functional/bind_front.md)、[`std::bind`](/reference/functional/bind.md)、[`std::mem_fn`](/reference/functional/mem_fn.md)の`constexpr`対応|[`<functional>`](/reference/functional.md)|
Expand Down Expand Up @@ -110,5 +110,7 @@
## 参照

- [SD-FeatureTest: Feature-Test Macros and Policies - isocpp](https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations)
- [LWG Issue 3792. `__cpp_lib_constexpr_algorithms` should also be defined in `<utility>`](https://cplusplus.github.io/LWG/issue3792)
- C++23で、`__cpp_lib_constexpr_algorithms`の定義ヘッダに[`<utility>`](/reference/utility.md)が追加された(値`201806L`は不変。C++20へ遡及適用される)
- [LWG Issue 4440. Forward declarations of entities need also in entries](https://cplusplus.github.io/LWG/issue4440)
- C++26で、`__cpp_lib_char8_t`と`__cpp_lib_syncbuf`の定義ヘッダに[`<iosfwd>`](/reference/iosfwd.md)が追加された(`<iosfwd>`が関連エンティティの先行宣言を含むため)
4 changes: 4 additions & 0 deletions lang/cpp23/feature_test_macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,9 @@
## 参照

- [SD-FeatureTest: Feature-Test Macros and Policies - isocpp](https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations)
- [LWG Issue 3750. Too many papers bump `__cpp_lib_format`](https://cplusplus.github.io/LWG/issue3750)
- C++23で、フォーマットRange系(P2286/P2585)用に`__cpp_lib_format_ranges`(値`202207L`)が追加され、`__cpp_lib_format`とマクロが分離された
- [LWG Issue 3751. Missing feature macro for `flat_set`](https://cplusplus.github.io/LWG/issue3751)
- C++23で、`flat_set`/`flat_multiset`用の機能テストマクロ`__cpp_lib_flat_set`(値`202207L`)が追加された
- [LWG Issue 4440. Forward declarations of entities need also in entries](https://cplusplus.github.io/LWG/issue4440)
- C++26で、`__cpp_lib_spanstream`の定義ヘッダに[`<iosfwd>`](/reference/iosfwd.md)が追加された(`<iosfwd>`が`<spanstream>`のエンティティの先行宣言を含むため)
2 changes: 2 additions & 0 deletions reference/algorithm/ranges_rotate_copy.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,5 +169,7 @@ int main() {
- [N4861 25 Algorithms library](https://timsong-cpp.github.io/cppwp/n4861/algorithms)
- [P3179R9 C++ parallel range algorithms](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3179r9.html)
- [P3709R2 Reconsider parallel `ranges::rotate_copy` and `ranges::reverse_copy`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3709r2.html)
- [LWG Issue 3759. `ranges::rotate_copy` should use `std::move`](https://cplusplus.github.io/LWG/issue3759)
- C++23で、範囲版がイテレータ版へ`result`を渡す際、`result`が`weakly_incrementable`のみでコピー不可の可能性があるため`std::move(result)`で渡すよう修正された
- [LWG Issue 4441. `ranges::rotate` do not handle sized-but-not-sized-sentinel ranges correctly](https://cplusplus.github.io/LWG/issue4441)
- C++26で、実行ポリシーをとる範囲版の効果を規定する等価コードで、末尾イテレータの算出が`ranges::end(r)`から`ranges::begin(r) + ranges::distance(r)`へ変更された。サイズは判るがsized sentinelを持たない範囲を正しく扱うため
8 changes: 5 additions & 3 deletions reference/atomic/atomic_notify_all.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
namespace std {
template <class T>
void
atomic_notify_all(volatile atomic<T>* object); // (1) C++20
atomic_notify_all(volatile atomic<T>* object) noexcept; // (1) C++20

template <class T>
void
atomic_notify_all(atomic<T>* object); // (2) C++20
atomic_notify_all(atomic<T>* object) noexcept; // (2) C++20
template <class T>
constexpr void
atomic_notify_all(atomic<T>* object); // (2) C++26
atomic_notify_all(atomic<T>* object) noexcept; // (2) C++26
}
```

Expand Down Expand Up @@ -102,3 +102,5 @@ int main()
- C++20での、`volatile`版への制約追加
- [P3309R3 `constexpr atomic` and `atomic_ref`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html)
- C++26で`constexpr`に対応した
- [LWG Issue 3745. `std::atomic_wait` and its friends lack `noexcept`](https://cplusplus.github.io/LWG/issue3745)
- C++23で、対応するメンバ関数や他の`atomic_*`フリー関数と一貫させるため、`noexcept`が付加された
8 changes: 5 additions & 3 deletions reference/atomic/atomic_notify_one.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
namespace std {
template <class T>
void
atomic_notify_one(volatile atomic<T>* object); // (1) C++20
atomic_notify_one(volatile atomic<T>* object) noexcept; // (1) C++20

template <class T>
void
atomic_notify_one(atomic<T>* object); // (2) C++20
atomic_notify_one(atomic<T>* object) noexcept; // (2) C++20
template <class T>
constexpr void
atomic_notify_one(atomic<T>* object); // (2) C++26
atomic_notify_one(atomic<T>* object) noexcept; // (2) C++26
}
```

Expand Down Expand Up @@ -128,3 +128,5 @@ int main()
- C++20での、`volatile`版への制約追加
- [P3309R3 `constexpr atomic` and `atomic_ref`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html)
- C++26で`constexpr`に対応した
- [LWG Issue 3745. `std::atomic_wait` and its friends lack `noexcept`](https://cplusplus.github.io/LWG/issue3745)
- C++23で、対応するメンバ関数や他の`atomic_*`フリー関数と一貫させるため、`noexcept`が付加された
8 changes: 5 additions & 3 deletions reference/atomic/atomic_wait.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ namespace std {
template<class T>
void
atomic_wait(const volatile atomic<T>* object,
typename atomic<T>::value_type old); // (1) C++20
typename atomic<T>::value_type old) noexcept; // (1) C++20

template<class T>
void
atomic_wait(const atomic<T>* object,
typename atomic<T>::value_type old); // (2) C++20
typename atomic<T>::value_type old) noexcept; // (2) C++20
template<class T>
constexpr void
atomic_wait(const atomic<T>* object,
typename atomic<T>::value_type old); // (2) C++26
typename atomic<T>::value_type old) noexcept; // (2) C++26
}
```

Expand Down Expand Up @@ -140,3 +140,5 @@ int main()
- C++20での、`volatile`版への制約追加
- [P3309R3 `constexpr atomic` and `atomic_ref`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html)
- C++26で`constexpr`に対応した
- [LWG Issue 3745. `std::atomic_wait` and its friends lack `noexcept`](https://cplusplus.github.io/LWG/issue3745)
- C++23で、対応するメンバ関数や他の`atomic_*`フリー関数と一貫させるため、`noexcept`が付加された
8 changes: 5 additions & 3 deletions reference/atomic/atomic_wait_explicit.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ namespace std {
void
atomic_wait_explicit(const volatile atomic<T>* object,
typename atomic<T>::value_type old,
memory_order order); // (1) C++20
memory_order order) noexcept; // (1) C++20

template<class T>
void
atomic_wait_explicit(const atomic<T>* object,
typename atomic<T>::value_type old,
memory_order order); // (2) C++20
memory_order order) noexcept; // (2) C++20
template<class T>
constexpr void
atomic_wait_explicit(const atomic<T>* object,
typename atomic<T>::value_type old,
memory_order order); // (2) C++26
memory_order order) noexcept; // (2) C++26
}
```

Expand Down Expand Up @@ -151,3 +151,5 @@ int main()
- C++20での、`volatile`版への制約追加
- [P3309R3 `constexpr atomic` and `atomic_ref`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3309r3.html)
- C++26で`constexpr`に対応した
- [LWG Issue 3745. `std::atomic_wait` and its friends lack `noexcept`](https://cplusplus.github.io/LWG/issue3745)
- C++23で、対応するメンバ関数や他の`atomic_*`フリー関数と一貫させるため、`noexcept`が付加された
7 changes: 6 additions & 1 deletion reference/chrono/zoned_time/formatter/format.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
template <class FormatContext>
typename FormatContext::iterator
format(const chrono::zoned_time<Duration, TimeZonePtr>& tp,
FormatContext& ctx); // (1) C++20
FormatContext& ctx) const; // (1) C++20
```

## 概要
Expand Down Expand Up @@ -45,3 +45,8 @@ return formatter<chrono::local-time-format-t<Duration>, charT>::format(
- [Clang](/implementation.md#clang): 9.0 [mark noimpl]
- [GCC](/implementation.md#gcc): 9.2 [mark noimpl]
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 3 [mark noimpl]


## 参照
- [LWG Issue 3636. `formatter<T>::format` should be `const`-qualified](https://cplusplus.github.io/LWG/issue3636)
- C++23で、`formatter`の`format`メンバ関数が`const`修飾された
2 changes: 2 additions & 0 deletions reference/flat_set.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,5 @@
- C++23で`flat_set`が導入された経緯・動機・設計について記載されている
- [P1222R4 A Standard `flat_set`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf)
- C++23で導入された`flat_set`の仕様
- [LWG Issue 3774. `<flat_set>` should include `<compare>`](https://cplusplus.github.io/LWG/issue3774)
- C++23で、`flat_set`/`flat_multiset`が`operator<=>`を持つため、`<flat_set>`が`<compare>`をインクルードすることが規定された
7 changes: 6 additions & 1 deletion reference/functional/reference_wrapper/op_call.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ template <class... ArgTypes>
invoke_result_t<T&, ArgTypes...> operator ()(ArgTypes&&... args) const; //C++17

template <class... ArgTypes>
constexpr invoke_result_t<T&, ArgTypes...> operator ()(ArgTypes&&... args) const; //C++20
constexpr invoke_result_t<T&, ArgTypes...>
operator ()(ArgTypes&&... args) const
noexcept(is_nothrow_invocable_v<T&, ArgTypes...>); //C++20
```
* is_nothrow_invocable_v[link /reference/type_traits/is_nothrow_invocable.md]

## 概要
保持している参照に対して関数呼び出しを行う
Expand Down Expand Up @@ -77,3 +80,5 @@ int main()
## 参照
- [P0357R3 reference_wrapper for incomplete types](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html)
- テンプレートパラメータ`T`が完全型であるという要件が追加された経緯
- [LWG Issue 3764. `reference_wrapper::operator()` should propagate `noexcept`](https://cplusplus.github.io/LWG/issue3764)
- C++23で、`operator()`に`noexcept(is_nothrow_invocable_v<T&, ArgTypes...>)`が付加され、被参照の呼び出し可能物の`noexcept`性が伝播するようになった
6 changes: 4 additions & 2 deletions reference/future/future/op_assign.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ future& operator=(future&& rhs) noexcept; // (2)


## 効果
- (2) : 共有状態を解放し、`rhs`の共有状態を含むコンテンツを`*this`にムーブ代入する。
- (2) : [`addressof`](/reference/memory/addressof.md)`(rhs) == this`(自己代入)の場合、効果はない。それ以外の場合、共有状態を解放し、`rhs`の共有状態を含むコンテンツを`*this`にムーブ代入する。


## 戻り値
- (2) : `*this`


## 事後条件
- (2) : [`valid()`](valid.md)の戻り値が、この関数を呼び出す前の`rhs.`[`valid()`](valid.md)と等価になること。`rhs.`[`valid()`](valid.md) `== false`になること。
- (2) : [`valid()`](valid.md)の戻り値が、この関数を呼び出す前の`rhs.`[`valid()`](valid.md)と等価になること。[`addressof`](/reference/memory/addressof.md)`(rhs) != this`(自己代入でない)の場合、`rhs.`[`valid()`](valid.md) `== false`になること。


## 例外
Expand Down Expand Up @@ -61,3 +61,5 @@ int main()


## 参照
- [LWG Issue 3795. Self-move-assignment of `std::future` and `std::shared_future` have unimplementable postconditions](https://cplusplus.github.io/LWG/issue3795)
- C++23で、自己代入(`addressof(rhs) == this`)の場合は効果がないことが効果に明記され、事後条件の`rhs.valid() == false`が「自己代入でない場合」に条件付けられた
7 changes: 5 additions & 2 deletions reference/future/shared_future/op_assign.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ shared_future& operator=(shared_future&& rhs) noexcept; // (2)


## 効果
- (1) : 共有状態を解放し、`rhs`の共有状態を含むコンテンツを`*this`にコピー代入する。`rhs`と`*this`が同じ共有状態を参照するようになる。
- (1) : [`addressof`](/reference/memory/addressof.md)`(rhs) == this`(自己代入)の場合、効果はない。それ以外の場合、共有状態を解放し、`rhs`の共有状態を含むコンテンツを`*this`にコピー代入する。`rhs`と`*this`が同じ共有状態を参照するようになる。
- (2) : [`addressof`](/reference/memory/addressof.md)`(rhs) == this`(自己代入)の場合、効果はない。それ以外の場合、共有状態を解放し、`rhs`の共有状態を含むコンテンツを`*this`にムーブ代入する。


## 事後条件
- (1) : `valid() == rhs.valid()`
- (2) : `valid()`の戻り値が、この関数を呼び出す前の`rhs.valid()`と等価になること。`rhs.valid() == false`になること。
- (2) : `valid()`の戻り値が、この関数を呼び出す前の`rhs.valid()`と等価になること。[`addressof`](/reference/memory/addressof.md)`(rhs) != this`(自己代入でない)の場合、`rhs.valid() == false`になること。


## 例外
Expand Down Expand Up @@ -96,3 +97,5 @@ int main()


## 参照
- [LWG Issue 3795. Self-move-assignment of `std::future` and `std::shared_future` have unimplementable postconditions](https://cplusplus.github.io/LWG/issue3795)
- C++23で、自己代入(`addressof(rhs) == this`)の場合は効果がないことが効果に明記され、(2)の事後条件の`rhs.valid() == false`が「自己代入でない場合」に条件付けられた
5 changes: 5 additions & 0 deletions reference/generator/generator/iterator/op_equal.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,8 @@ return i.coroutine_.done();

## 関連項目
- [`generator::end()`](../end.md)


## 参照
- [LWG Issue 3762. `generator::iterator::operator==` should pass by reference](https://cplusplus.github.io/LWG/issue3762)
- C++23で、`operator==`のイテレータ引数がコピー渡しから`const iterator&`(参照渡し)に変更された
9 changes: 7 additions & 2 deletions reference/ios/fpos.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ using u32streampos = fpos<char_traits<char32_t>::state_type>;
| `P p = i;` | 〃 | 〃 |
| `P(o)` | オフセットからの(一時)オブジェクトの生成 | |
| `O(p)` | オフセットへの変換 | `P(O(p)) == p` |
| `p == q` | 比較 | 結果の型はboolに変換可能である |
| `p != q` | 〃 | |
| `p == q` | 比較 | C++03 : 結果の型は`bool`に変換可能である<br/>C++23 : 戻り値の型は`bool`。`p`, `q`をそれぞれ値`o`, `o2`から得たとき、`o == o2`のとき、かつそのときに限り`true` |
| `p != q` | 〃 | C++03 : 結果の型は`bool`に変換可能である<br/>C++23 : 戻り値の型は`bool`。`!(p == q)` |
| `q = p + o` | 正値のオフセット | `q - o == p` |
| `p += o` | 〃 | 〃 |
| `q = p - o` | | `q + o == p` |
Expand All @@ -64,3 +64,8 @@ using u32streampos = fpos<char_traits<char32_t>::state_type>;

- 戻り値としてこの値が返されれば、操作の失敗を表す。
- 引数としてこの値が渡された場合、未定義動作を引き起こす。


## 参照
- [LWG Issue 3118. `fpos` equality comparison unspecified](https://cplusplus.github.io/LWG/issue3118)
- C++23で、`operator==`/`operator!=`の戻り値の型が「boolに変換可能」から`bool`に修正され、等値比較の意味論(同じオフセット値から得た`fpos`のとき、かつそのときに限り等しい)が規定された
2 changes: 2 additions & 0 deletions reference/iterator/const_sentinel.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,5 @@ int main() {
## 参照

- [P2278R4 `cbegin` should always return a constant iterator](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html)
- [LWG Issue 3765. `const_sentinel` should be constrained](https://cplusplus.github.io/LWG/issue3765)
- C++23で、テンプレートパラメータ制約が無制約の`class S`から`semiregular S`に強化された
9 changes: 9 additions & 0 deletions reference/iterator/disable_sized_sentinel_for.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,15 @@ namespace std {
requires (!sized_sentinel_for<Iterator1, Iterator2>)
inline constexpr bool disable_sized_sentinel_for<reverse_iterator<Iterator1>,
reverse_iterator<Iterator2>> = true;

// move_iteratorに対する特殊化 (C++23)
template<class Iterator1, class Iterator2>
requires (!sized_sentinel_for<Iterator1, Iterator2>)
inline constexpr bool disable_sized_sentinel_for<move_iterator<Iterator1>,
move_iterator<Iterator2>> = true;
}
```
* move_iterator[link move_iterator.md]
* sized_sentinel_for[link /reference/iterator/sized_sentinel_for.md]
* reverse_iterator[link /reference/iterator/reverse_iterator.md]

Expand Down Expand Up @@ -53,3 +60,5 @@ namespace std {
- [P1871R0 Should concepts be enabled or disabled?](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1871r0.html)
- [P1871R1 Concept traits should be named after concepts](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1871r1.html)
- [microsoft/STL P1871R1 disable_sized_sentinel_for #607 - Github](https://github.com/microsoft/STL/pull/607/files#r392700693)
- [LWG Issue 3736. `move_iterator` missing `disable_sized_sentinel_for` specialization](https://cplusplus.github.io/LWG/issue3736)
- C++23で、`move_iterator`に対する`disable_sized_sentinel_for`の特殊化が追加され、`move_iterator`が意味論的に`sized_sentinel_for`を満たさない場合に誤ってそれを満たすと判定される問題が解消された
Loading
Loading