Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
8124ac5
C++26 LWG Issueへの対応としてbasic_stringのappenとassignのオーバーロードを追加
faithandbrave Aug 12, 2026
99939ab
sentinel_for : C++26 LWG Issueの対応として要件を追加
faithandbrave Aug 12, 2026
d758664
has-tuple-element : C++26 LWG Issueへの対応として制約を追加
faithandbrave Aug 12, 2026
2674ffa
expected : C++26 LWG Issueへの対応としてremove_cvを効果に追加
faithandbrave Aug 12, 2026
3234f41
expected::operator= : C++26 LWG Issueへの対応としてトリビアル条件を追加
faithandbrave Aug 12, 2026
47ea59f
inplace_vector::operator<=> : 制約追加
faithandbrave Aug 12, 2026
ceca0b6
inplace_vector::swap : 事前条件を追加
faithandbrave Aug 12, 2026
e6dfee3
map / multimapの推論補助 : C++26 LWG Issueでtuple-likeな要素に対応
faithandbrave Aug 12, 2026
8b99463
mdspan : C++26 LWG Issueへの対応としてインデックス値をmoveするよう修正
faithandbrave Aug 12, 2026
5878a61
indirect::operator== : noexcept条件を追加
faithandbrave Aug 12, 2026
32420c0
hive::reserve : LWG Issueを記載
faithandbrave Aug 12, 2026
fd37030
meta::identifier : LWG Issueを記載
faithandbrave Aug 12, 2026
cf2aaaa
execution::task : C++26 LWG Issue対応として要件を追加
faithandbrave Aug 12, 2026
b4fc9fe
nullopt_t : C++26で比較可能になったことを記載
faithandbrave Aug 12, 2026
d66401c
source_location : C++26 LWG Issue対応としてコンストラクタと代入演算子がconstexprであることを記載
faithandbrave Aug 12, 2026
465f02e
polymorphic : LWG Issueを記載
faithandbrave Aug 12, 2026
b075738
bind_back / bind_front / not_fn : LWG Issueを記載
faithandbrave Aug 12, 2026
29a57b3
ranges::set_difference : 戻り値型を変更
faithandbrave Aug 12, 2026
1974682
ranges::set_intersection : 戻り値を修正
faithandbrave Aug 12, 2026
e04e3b1
vprint_nonunicode_buffered : 引数が転送されていなかった問題を修正
faithandbrave Aug 12, 2026
62e67bd
C++26機能テストマクロにstdbit.h、stdchkdint.hのマクロを追加
faithandbrave Aug 12, 2026
139d3e3
機能テストマクロの参照を追加
faithandbrave Aug 12, 2026
b7b1fb1
concat_view : reserve_hintを追加
faithandbrave Aug 12, 2026
ebedbf7
hive : LWG Issueを記載
faithandbrave Aug 12, 2026
a4fff6e
meta : 文字列を返す関数がNULL終端された値を返すことを記載
faithandbrave Aug 12, 2026
bed4b94
owner_before / owner_less::operator() : constexpr取り消し
faithandbrave Aug 12, 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
8 changes: 8 additions & 0 deletions lang/cpp26/feature_test_macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@
|`__cpp_lib_smart_ptr_owner_equality`|`202306L`|[`<memory>`](/reference/memory.md)に[`std::owner_hash`](/reference/memory/owner_hash.md)と[`std::owner_equal`](/reference/memory/owner_equal.md)を追加|[`<memory>`](/reference/memory.md)|
|`__cpp_lib_span`|`202311L`|[`std::mdspan`](/reference/mdspan/mdspan.md)に[`at()`](/reference/mdspan/mdspan/at.md)メンバ関数を追加|[`<span>`](/reference/span.md)|
|`__cpp_lib_span_initializer_list`|`202311L`|[`std::span`](/reference/span/span.md)に[`std::initializer_list`](/reference/initializer_list/initializer_list.md)をとるコンストラクタを追加|[`<span>`](/reference/span.md)|
|`__cpp_lib_stdbit_h`|`202603L`|[`<stdbit.h>`](/reference/stdbit.h.md)ヘッダがC++から使用可能であることを示す|[`<stdbit.h>`](/reference/stdbit.h.md)|
|`__cpp_lib_stdckdint_h`|`202603L`|[`<stdckdint.h>`](/reference/stdckdint.h.md)ヘッダがC++から使用可能であることを示す|[`<stdckdint.h>`](/reference/stdckdint.h.md)|
|`__cpp_lib_sstream_from_string_view`|`202306L`|[`std::basic_stringstream`](/reference/sstream/basic_stringstream.md)などが[`std::basic_string_view`](/reference/string_view/basic_string_view.md)から構築可能に|[`<sstream>`](/reference/sstream.md)|
|`__cpp_lib_string_subview`|`202506L`|[`std::basic_string`](/reference/string/basic_string.md)と[`std::basic_string_view`](/reference/string_view/basic_string_view.md)に`subview()`を追加|[`<string>`](/reference/string.md), [`<string_view>`](/reference/string_view.md)|
|`__cpp_lib_string_view`|`202403L`|[`std::basic_string`](/reference/string/basic_string.md)と[`std::basic_string_view`](/reference/string_view/basic_string_view.md)を連結させる`operator+`を追加|[`<string>`](/reference/string.md), [`<string_view>`](/reference/string_view.md)|
Expand Down Expand Up @@ -191,3 +193,9 @@
## 参照

- [SD-FeatureTest: Feature-Test Macros and Policies - isocpp](https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations)
- [LWG Issue 4550. Need new feature test macros for `<stdckdint.h>` and `<stdbit.h>`](https://cplusplus.github.io/LWG/issue4550)
- C++26で、`__cpp_lib_stdbit_h`と`__cpp_lib_stdckdint_h`が追加された
- [P3371R5 Fix C++26 BLAS rank updates consistency](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3371r5.html)
- C++26で`__cpp_lib_linalg`が`202511L`に更新された
- [P4012R1 Value-preserving consteval broadcast to `simd::vec`](https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p4012r1.pdf)
- C++26のsimd整合修正により`__cpp_lib_simd`が`202603L`に更新された
8 changes: 8 additions & 0 deletions lang/cpp29/feature_test_macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,11 @@
## 参照

- [SD-FeatureTest: Feature-Test Macros and Policies - isocpp](https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations)
- [P3428R4 Hazard Pointer Batches](https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3428r4.pdf)
- C++29で`__cpp_lib_hazard_pointer`が`202606L`に更新された
- [P3319R6 Add an iota object for simd (and more)](https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3319r6.pdf)
- C++29で`__cpp_lib_simd`が`202606L`に更新された
- [P3772R2 std::simd overloads for bit permutations](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3772r2.html)
- C++29で`__cpp_lib_simd_bitops`が追加された
- [P3793R2 Better shifting](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3793r2.html)
- C++29で`__cpp_lib_simd_bitops`が追加された
29 changes: 19 additions & 10 deletions reference/algorithm/ranges_set_difference.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ namespace std::ranges {
class Proj1 = identity,
class Proj2 = identity>
requires mergeable<I1, I2, O, Comp, Proj1, Proj2>
set_difference_result<I1, O>
set_difference_truncated_result<I1, I2, O>
set_difference(Ep&& exec,
I1 first1,
S1 last1,
Expand All @@ -71,7 +71,7 @@ namespace std::ranges {
class Proj1 = identity,
class Proj2 = identity>
requires mergeable<iterator_t<R1>, iterator_t<R2>, iterator_t<OutR>, Comp, Proj1, Proj2>
set_difference_result<borrowed_iterator_t<R1>, borrowed_iterator_t<OutR>>
set_difference_truncated_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>, borrowed_iterator_t<OutR>>
set_difference(Ep&& exec,
R1&& r1,
R2&& r2,
Expand All @@ -82,6 +82,7 @@ namespace std::ranges {
}
```
* set_difference_result[link ranges_in_out_result.md]
* set_difference_truncated_result[link ranges_in_in_out_result.md]
* weakly_incrementable[link /reference/iterator/weakly_incrementable.md]
* ranges::less[link /reference/functional/ranges_less.md]
* mergeable[link /reference/iterator/mergeable.md]
Expand Down Expand Up @@ -109,15 +110,21 @@ namespace std::ranges {


## 戻り値
```cpp
set_difference_result {
.in = last1,
.out = result_last,
}
```
* set_difference_result[link ranges_in_out_result.md]
- (1), (2) :

```cpp
set_difference_result {
.in = last1,
.out = result_last,
}
```
* set_difference_result[link ranges_in_out_result.md]

ただし、`result_last` は構築された範囲の終端。

ただし、`result_last` は構築された範囲の終端。
- (3), (4) : [`set_difference_truncated_result`](ranges_in_in_out_result.md)を返す。`[first1, last1)`/`[first2, last2)`のうちコピーまたはスキップされた要素数をそれぞれ`A`/`B`、`result`へ書き込んだ要素数を`N`、出力範囲の要素数(`result`から`result_last`までの距離)を`M`とする。
- `N == M`のとき(出力バッファを使い切ったとき):`{.in1 = last1, .in2 = first2 + B, .out = result + N}`
- そうでなければ:`{.in1 = first1 + A, .in2 = first2 + B, .out = result_last}`


## 計算量
Expand Down Expand Up @@ -209,3 +216,5 @@ 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)
- [LWG Issue 4544. Parallel overload of `ranges::set_difference` should return `in_in_out_result`](https://cplusplus.github.io/LWG/issue4544)
- C++26で、並列版(3), (4)の戻り値型が`set_difference_result`(`in_out_result`)から`set_difference_truncated_result`(`in_in_out_result`)に変更され、両入力範囲がどこまで処理されたかを返すようになった
24 changes: 15 additions & 9 deletions reference/algorithm/ranges_set_intersection.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,16 +119,20 @@ namespace std::ranges {
## 戻り値
次のメンバをもつtuple-likeオブジェクト。

```cpp
set_intersection_result {
.in1 = last1,
.in2 = last2,
.out = result_last,
}
```
* set_intersection_result[link ranges_in_in_out_result.md]
- (1), (2) :

```cpp
set_intersection_result {
.in1 = last1,
.in2 = last2,
.out = result_last,
}
```
* set_intersection_result[link ranges_in_in_out_result.md]

ただし、`result_last` は構築された範囲の終端。

ただし、`result_last` は構築された範囲の終端。
- (3), (4) : `[first1, last1)`/`[first2, last2)`のうちコピーまたはスキップされた要素数をそれぞれ`A`/`B`、`result`へ書き込んだ要素数を`N`とするとき、`{.in1 = first1 + A, .in2 = first2 + B, .out = result + N}`。並列版では一方の入力範囲を消費し終えた時点で早期終了できるため、入力範囲の末尾まで進めるとは限らない。

## 計算量
最大で `2 * ((last1 - first1) + (last2 - first2)) - 1` 回の比較を行う
Expand Down Expand Up @@ -218,3 +222,5 @@ 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)
- [LWG Issue 4548. Parallel `ranges::set_intersection` should not do unnecessary work](https://cplusplus.github.io/LWG/issue4548)
- C++26で、並列版(3), (4)の戻り値が、一方の入力を消費し終えた時点での位置`{first1 + A, first2 + B, result + N}`となり、不要な反復を避けて早期終了できるようになった
4 changes: 4 additions & 0 deletions reference/execution/execution/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ namespace std::execution {

`error_types`が[`completion_signatures`](completion_signatures.md)`<ErrorSigs...>`の特殊化ではない、もしくは`ErrorSigs`が[`set_error_t`](set_error.md)`(E)`が適格でない要素型`E`を含むとき、プログラムは不適格となる。

`allocator_type`はCpp17Allocator要件を満たし、`start_scheduler_type`は[`scheduler`](scheduler.md)のモデルであり、`stop_source_type`は[`stoppable-source`](/reference/stop_token/stoppable-source.md)のモデルであること。

`task`クラステンプレートは、下記の静的メンバ関数テンプレートを定義する。

```cpp
Expand Down Expand Up @@ -131,5 +133,7 @@ int main()
- [P3552R3 Add a Coroutine Task Type](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3552r3.html)
- [LWG4343. Missing default template arguments for `task`](https://cplusplus.github.io/LWG/issue4343)
- [LWG4528. `task` needs `get_completion_signatures()`](https://cplusplus.github.io/LWG/issue4528)
- [LWG4485. Move specification for `task::stop_token_type`](https://cplusplus.github.io/LWG/issue4485)
- C++26で、`allocator_type`・`start_scheduler_type`・`stop_source_type`に対する要件が明記された
- [P3941R4 Scheduler Affinity](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3941r4.html)
- C++now 2025, [Getting The Lazy Task Done](https://schedule.cppnow.org/wp-content/uploads/2025/03/Getting_The_Lazy_Task_Done.pdf)
9 changes: 9 additions & 0 deletions reference/expected/expected.void/op_assign.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ has_val = false;`
[`is_nothrow_move_constructible_v`](/reference/type_traits/is_nothrow_move_constructible.md)`<E> &&` [`is_nothrow_move_assignable_v`](/reference/type_traits/is_nothrow_move_assignable.md)`<E>`


## トリビアルに定義される条件
C++26から、下記の条件を満たす場合、代入演算子はトリビアルに定義される。

- (1) : [`is_trivially_copy_constructible_v`](/reference/type_traits/is_trivially_copy_constructible.md)`<E>`、[`is_trivially_copy_assignable_v`](/reference/type_traits/is_trivially_copy_assignable.md)`<E>`、[`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<E>`が全て`true`のとき、コピー代入演算子はトリビアルである。
- (2) : [`is_trivially_move_constructible_v`](/reference/type_traits/is_trivially_move_constructible.md)`<E>`、[`is_trivially_move_assignable_v`](/reference/type_traits/is_trivially_move_assignable.md)`<E>`、[`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<E>`が全て`true`のとき、ムーブ代入演算子はトリビアルである。


## delete定義される条件
- (1) : 下記いずれか1つでも満たされないとき、コピー代入演算子はdelete定義される。
- [`is_copy_assignable_v`](/reference/type_traits/is_copy_assignable.md)`<E> == true`
Expand Down Expand Up @@ -168,3 +175,5 @@ int main()

## 参照
- [P0323R12 std::expected](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
- [LWG Issue 4026. Assignment operators of `std::expected` should propagate triviality](https://cplusplus.github.io/LWG/issue4026)
- C++26で、`E`が対応する操作をトリビアルに持つ場合に、コピー代入演算子(1)とムーブ代入演算子(2)もトリビアルに定義されるようになった
21 changes: 21 additions & 0 deletions reference/expected/expected/op_assign.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,25 @@ has_val = false;`
- [`is_nothrow_move_assignable_v`](/reference/type_traits/is_nothrow_move_assignable.md)`<T> &&` [`is_nothrow_move_constructible_v`](/reference/type_traits/is_nothrow_move_constructible.md)`<T> &&` [`is_nothrow_move_assignable_v`](/reference/type_traits/is_nothrow_move_assignable.md)`<E> &&` [`is_nothrow_move_constructible_v`](/reference/type_traits/is_nothrow_move_constructible.md)`<E>`


## トリビアルに定義される条件
C++26から、下記の条件を満たす場合、代入演算子はトリビアルに定義される。

- (1) : 以下の全てを満たすとき、コピー代入演算子はトリビアルである。
- [`is_trivially_copy_constructible_v`](/reference/type_traits/is_trivially_copy_constructible.md)`<T> == true`
- [`is_trivially_copy_assignable_v`](/reference/type_traits/is_trivially_copy_assignable.md)`<T> == true`
- [`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<T> == true`
- [`is_trivially_copy_constructible_v`](/reference/type_traits/is_trivially_copy_constructible.md)`<E> == true`
- [`is_trivially_copy_assignable_v`](/reference/type_traits/is_trivially_copy_assignable.md)`<E> == true`
- [`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<E> == true`
- (2) : 以下の全てを満たすとき、ムーブ代入演算子はトリビアルである。
- [`is_trivially_move_constructible_v`](/reference/type_traits/is_trivially_move_constructible.md)`<T> == true`
- [`is_trivially_move_assignable_v`](/reference/type_traits/is_trivially_move_assignable.md)`<T> == true`
- [`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<T> == true`
- [`is_trivially_move_constructible_v`](/reference/type_traits/is_trivially_move_constructible.md)`<E> == true`
- [`is_trivially_move_assignable_v`](/reference/type_traits/is_trivially_move_assignable.md)`<E> == true`
- [`is_trivially_destructible_v`](/reference/type_traits/is_trivially_destructible.md)`<E> == true`


## delete定義される条件
- (1) : 下記いずれか1つでも満たされないとき、コピー代入演算子はdelete定義される。
- [`is_copy_assignable_v`](/reference/type_traits/is_copy_assignable.md)`<T> == true`
Expand Down Expand Up @@ -242,3 +261,5 @@ int main()

## 参照
- [P0323R12 std::expected](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
- [LWG Issue 4026. Assignment operators of `std::expected` should propagate triviality](https://cplusplus.github.io/LWG/issue4026)
- C++26で、`T`と`E`が対応する操作をトリビアルに持つ場合に、コピー代入演算子(1)とムーブ代入演算子(2)もトリビアルに定義されるようになった
5 changes: 4 additions & 1 deletion reference/expected/expected/swap.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ constexpr void swap(expected& rhs) noexcept(see below);
throw;
}
} else {
T tmp(std::move(val));
remove_cv_t<T> tmp(std::move(val));
destroy_at(addressof(val));
try {
construct_at(addressof(unex), std::move(rhs.unex));
Expand All @@ -66,6 +66,7 @@ constexpr void swap(expected& rhs) noexcept(see below);
* destroy_at[link /reference/memory/destroy_at.md]
* std::move[link /reference/utility/move.md]
* is_nothrow_move_constructible_v[link /reference/type_traits/is_nothrow_move_constructible.md]
* remove_cv_t[link /reference/type_traits/remove_cv.md]


## 戻り値
Expand Down Expand Up @@ -119,3 +120,5 @@ int main()

## 参照
- [P0323R12 std::expected](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
- [LWG Issue 3891. LWG 3870 breaks `std::expected<cv T, E>`](https://cplusplus.github.io/LWG/issue3891)
- C++26で、`expected<const T, E>`のようなCV修飾された正常値型を扱えるよう、内部で値を`remove_cv_t<T>`として格納するようになり、交換時の一時変数の型も`remove_cv_t<T>`に修正された
2 changes: 2 additions & 0 deletions reference/functional/bind_back.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,5 @@ int main() {
- [rangesのパイプにアダプトするには](https://onihusube.hatenablog.com/entry/2022/04/24/010041)
- [P2714R1 Bind front and back to NTTP callables](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2714r1.html)
- C++26でオーバーロード(2)を追加
- [LWG Issue 4533. `not_fn<f>` is unimplementable](https://cplusplus.github.io/LWG/issue4533)
- C++26で、NTTP版の呼び出しラッパーを実装可能にするため、`cw<f>`のコピーを対象オブジェクトとして持つよう仕様が明確化された
2 changes: 2 additions & 0 deletions reference/functional/bind_front.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,5 @@ int main() {
- [P1651R0 `bind_front` should not unwrap `reference_wrapper`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html)
- [P2714R1 Bind front and back to NTTP callables](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2714r1.html)
- C++26でオーバーロード(2)を追加
- [LWG Issue 4533. `not_fn<f>` is unimplementable](https://cplusplus.github.io/LWG/issue4533)
- C++26で、NTTP版の呼び出しラッパーを実装可能にするため、`cw<f>`のコピーを対象オブジェクトとして持つよう仕様が明確化された
2 changes: 2 additions & 0 deletions reference/functional/not_fn.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,5 @@ true
- [P1065R2 constexpr INVOKE](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html)
- [P2714R1 Bind front and back to NTTP callables](https://open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2714r1.html)
- C++26でオーバーロード(2)を追加
- [LWG Issue 4533. `not_fn<f>` is unimplementable](https://cplusplus.github.io/LWG/issue4533)
- C++26で、NTTP版の呼び出しラッパーを実装可能にするため、`cw<f>`のコピーを対象オブジェクトとして持つよう仕様が明確化された
2 changes: 2 additions & 0 deletions reference/hive/hive/is_within_hard_limits.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,5 @@ true
## 参照
- [P0447R28 Introduction of `std::hive` to the standard library](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0447r28.html)
- C++26で追加された
- [LWG Issue 4554. Remove undefined behaviour from `hive` for invalid limits](https://cplusplus.github.io/LWG/issue4554)
- C++26で、不正な容量制限に対する動作が未定義動作からエラー性動作(効果は処理系定義)に変更され、事前検証用の静的メンバ関数`is_within_hard_limits`が追加された
2 changes: 2 additions & 0 deletions reference/hive/hive/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,3 +178,5 @@ h5.size() = 3
## 参照
- [P0447R28 Introduction of `std::hive` to the standard library](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0447r28.html)
- C++26で追加された
- [LWG Issue 4554. Remove undefined behaviour from `hive` for invalid limits](https://cplusplus.github.io/LWG/issue4554)
- C++26で、不正な容量制限に対する動作が未定義動作からエラー性動作(効果は処理系定義)に変更され、事前検証用の静的メンバ関数`is_within_hard_limits`が追加された
2 changes: 2 additions & 0 deletions reference/hive/hive/reserve.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,5 @@ capacity >= 100 : true
## 参照
- [P0447R28 Introduction of `std::hive` to the standard library](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0447r28.html)
- C++26で`hive`が追加された
- [LWG Issue 4379. `hive::reserve()` needs *Throws:* element adjusted to match block min/max considerations](https://cplusplus.github.io/LWG/issue4379)
- C++26で、`capacity()`が`max_size()`を超える場合に`length_error`を送出するよう例外指定が明確化された
6 changes: 5 additions & 1 deletion reference/inplace_vector/inplace_vector/op_compare_3way.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ namespace std {
template <class T, size_t N>
constexpr synth-three-way-result<T>
operator<=>(const inplace_vector<T, N>& x,
const inplace_vector<T, N>& y); // (1) C++26
const inplace_vector<T, N>& y)
requires requires (const T t) { synth-three-way(t, t); }; // (1) C++26
}
```

Expand Down Expand Up @@ -43,6 +44,7 @@ return std::lexicographical_compare_three_way(
- `operator<=`
- `operator>`
- `operator>=`
- 要素型`T`が三方比較 (`synth-three-way`) を行えない場合、この演算子はオーバーロード解決の候補から除外される(ハードエラーにはならない)。


## 例
Expand Down Expand Up @@ -88,3 +90,5 @@ true

## 参照
- [P0843R14 `inplace_vector`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0843r14.html)
- [LWG Issue 4122. Ill-formed `operator<=>` can cause hard error instantiating `std::inplace_vector`](https://cplusplus.github.io/LWG/issue4122)
- C++26で、要素型`T`が三方比較できない場合にハードエラーとならないよう、この演算子に`requires`節による制約が追加された
Loading
Loading