Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
e19687c
Invokeコンセプト : 共用体を扱えるよう制約を見直し
faithandbrave Aug 18, 2026
99bf402
(u)intmax_t : C23との仕様合わせとして、long longより広い値を扱える必要がないことが明確化
faithandbrave Aug 18, 2026
a05cac0
pairの比較演算子 : C++23で要素型の異なるpair同士の比較が追加された
faithandbrave Aug 18, 2026
e03433d
ranges::to : LWG Issueを追加
faithandbrave Aug 18, 2026
e7ea148
repeat_view : 使用可能な差分型をもたない整数クラス型が除外されるようになった
faithandbrave Aug 18, 2026
d6e1163
repeat_view : LWG Issue対応としてpiecewiseコンストラクタの効果を整理
faithandbrave Aug 18, 2026
ad59625
priority_queue::push_range : LWG Issueを追加
faithandbrave Aug 18, 2026
c5ad959
memoryのuninitialize関係とconstruct関係 : const記憶域へのオブジェクト構築が禁止された
faithandbrave Aug 18, 2026
5d9080b
out_ptr_tのコンストラクタ : 効果として既存の値をresetするようになった
faithandbrave Aug 18, 2026
db6bdaa
mdspan : LWG Issueを記載
faithandbrave Aug 18, 2026
0fea630
basic_const_iterator::iter_move : LWG Issueを追加
faithandbrave Aug 18, 2026
283883e
basic_const_iterator::common_type : LWG Issueを追加
faithandbrave Aug 18, 2026
37769ab
formatter : char配列向け特殊化のconstが削除された
faithandbrave Aug 18, 2026
2e5610a
basic_format_args : C++23対応として推論補助を追加。DRなのでC++20でも動作する
faithandbrave Aug 18, 2026
58ad431
basic_format_argのコンストラクタ : LWG Issueを追加
faithandbrave Aug 18, 2026
6105911
erase(flat_(multi)set) : 述語には要素をconstで渡すよう変更
faithandbrave Aug 18, 2026
c8d1059
flat_map, flat_set : LWG Issueを追加
faithandbrave Aug 18, 2026
51b04ff
expected::value : 適格要件の追加とエラー値をconst修飾するよう変更
faithandbrave Aug 18, 2026
89b841a
expectedのモナディック操作 : const修飾版がエラーになっていたので制約を見直し
faithandbrave Aug 18, 2026
80530ff
expectedのコンストラクタ : 制約を見直し
faithandbrave Aug 18, 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
6 changes: 4 additions & 2 deletions reference/concepts/Invoke.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ C++における関数呼び出しという性質を抽象化しまとめた、

## 要件(C++20)
1. 仮想操作 *INVOKE*`(f, t1, t2, ..., tN)` を次のように定義する。
- `f` が型 `T` のメンバ関数へのポインタであり、[`is_base_of_v`](/reference/type_traits/is_base_of.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>> == true`(`t1` が `T` または `T` を継承した型のオブジェクト/参照)であるとき、 `(t1.*f)(t2, ..., tN)` と同じ効果を持つ。
- `f` が型 `T` のメンバ関数へのポインタであり、[`is_same_v`](/reference/type_traits/is_same.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>> || `[`is_base_of_v`](/reference/type_traits/is_base_of.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>>` が `true`(`t1` が `T` または `T` を継承した型のオブジェクト/参照)であるとき、 `(t1.*f)(t2, ..., tN)` と同じ効果を持つ。
- `f` が型 `T` のメンバ関数へのポインタであり、[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>`が[`reference_wrapper<T>`](/reference/functional/reference_wrapper.md)(`t1`が[`reference_wrapper`](/reference/functional/reference_wrapper.md)の特殊化)であるとき、 `(t1.get().*f)(t2, ..., tN)` と同じ効果を持つ。
- `f` が型 `T` のメンバ関数へのポインタであり、 `t1` が上記の条件に当てはまらない場合(例えば、t1が`T`のポインタ)、`((*t1).*f)(t2, ..., tN)` と同じ効果を持つ。
- `N == 1` で、`f` が型 `T` のメンバオブジェクトへのポインタであり、[`is_base_of_v`](/reference/type_traits/is_base_of.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>> == true`(`t1` が `T` または `T` を継承した型のオブジェクト/参照)であるとき、 `t1.*f` と同じ効果を持つ。
- `N == 1` で、`f` が型 `T` のメンバオブジェクトへのポインタであり、[`is_same_v`](/reference/type_traits/is_same.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>> || `[`is_base_of_v`](/reference/type_traits/is_base_of.md)`<T,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>>` が `true`(`t1` が `T` または `T` を継承した型のオブジェクト/参照)であるとき、 `t1.*f` と同じ効果を持つ。
- `N == 1` で、`f` が型 `T` のメンバオブジェクトへのポインタであり、[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<decltype(t1)>`が[`reference_wrapper<T>`](/reference/functional/reference_wrapper.md)(`t1`が[`reference_wrapper`](/reference/functional/reference_wrapper.md)の特殊化)であるとき、 `t1.get().*f` と同じ効果を持つ。
- `N == 1` で、`f` が型 `T` のメンバオブジェクトへのポインタであり、`t1` が上記の条件に当てはまらない場合(例えば、t1が`T`のポインタ)、 `(*t1).*f` と同じ効果を持つ。
- 上記の条件のどれにも当てはまらない場合、 `f(t1, t2, ..., tN)` と同じ効果を持つ。
Expand Down Expand Up @@ -84,3 +84,5 @@ C++20 における 2. について、次の文言を項目の最後に追加す
- [P0777R1 Treating Unnecessary `decay`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf)
- C++20から`decay_t`を`remove_cvref_t`へ変更。
- [P2136R3 `invoke_r`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2136r3.html)
- [LWG Issue 3655. The *INVOKE* operation and union types](https://cplusplus.github.io/LWG/issue3655)
- C++23で、メンバポインタの判定を`is_base_of_v`単独から`is_same_v || is_base_of_v`に変更し、共用体(union)型でも正しく扱えるようにした
10 changes: 10 additions & 0 deletions reference/cstdint/intmax_t.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ namespace std {
## 概要
最大の符号付き整数型。


## 備考
最大幅の符号付き整数型ではあるが、`long long`より広い拡張整数型のすべての値を表現できる必要はない。


## バージョン
### 言語
- C++11
Expand All @@ -23,3 +28,8 @@ namespace std {
- [GCC](/implementation.md#gcc): 4.7.0 [mark verified]
- [ICC](/implementation.md#icc): ??
- [Visual C++](/implementation.md#visual_cpp): 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]


## 参照
- [LWG Issue 3828. Sync `intmax_t` and `uintmax_t` with C2x](https://cplusplus.github.io/LWG/issue3828)
- C++23で、C23との同期のため、`intmax_t`は`long long`より広い拡張整数型のすべての値を表現できる必要はないことが明確化された
10 changes: 10 additions & 0 deletions reference/cstdint/uintmax_t.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ namespace std {
## 概要
最大の符号なし整数型。


## 備考
最大幅の符号なし整数型ではあるが、`unsigned long long`より広い拡張整数型のすべての値を表現できる必要はない。


## バージョン
### 言語
- C++11
Expand All @@ -23,3 +28,8 @@ namespace std {
- [GCC](/implementation.md#gcc): 4.7.0 [mark verified]
- [ICC](/implementation.md#icc): ??
- [Visual C++](/implementation.md#visual_cpp): 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]


## 参照
- [LWG Issue 3828. Sync `intmax_t` and `uintmax_t` with C2x](https://cplusplus.github.io/LWG/issue3828)
- C++23で、C23との同期のため、`uintmax_t`は`unsigned long long`より広い拡張整数型のすべての値を表現できる必要はないことが明確化された
6 changes: 4 additions & 2 deletions reference/expected/expected/and_then.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class expected {


## テンプレートパラメータ制約
- (1), (2) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<E> == true`
- (3), (4) : [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<E> == true`
- (1), (2) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, decltype(`[`error()`](error.md)`)> == true`
- (3), (4) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, decltype(`[`std::move`](/reference/utility/move.md)`(`[`error()`](error.md)`))> == true`


## 適格要件
Expand Down Expand Up @@ -133,5 +133,7 @@ int main()

## 参照
- [P2505R5 Monadic Functions for `std::expected`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html)
- [LWG Issue 3877. Incorrect constraints on `const`-qualified monadic overloads for `std::expected`](https://cplusplus.github.io/LWG/issue3877)
- C++23で、`const`修飾版で誤ってエラーになる問題を解消するため、制約が`is_copy_constructible_v<E>`から`is_constructible_v<E, decltype(error())>`(右辺値版は`decltype(std::move(error()))`)へ変更された
- [LWG Issue 3938. Cannot use `std::expected` monadic ops with move-only `error_type`](https://cplusplus.github.io/LWG/issue3938)
- C++26で、効果および適格要件で正常値へのアクセスに[`value()`](value.md)ではなく[`**this`](op_deref.md)を使うよう修正され、ムーブのみ可能な`error_type`でも使用できるようになった
7 changes: 5 additions & 2 deletions reference/expected/expected/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ constexpr bool converts-from-any-cvref =
- (4) : 次の制約を全て満たすこと
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, const U&> == true`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, const G&> == true`
- `converts-from-any-cvref<T, expected<U, G>> == false`
- `T`が cv `bool` でない場合、`converts-from-any-cvref<T, expected<U, G>> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, expected<U, G>&> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, expected<U, G>> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, const expected<U, G>&> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, const expected<U, G>> == false`
- (5) : 次の制約を全て満たすこと
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, U> == true`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, G> == true`
- `converts-from-any-cvref<T, expected<U, G>> == false`
- `T`が cv `bool` でない場合、`converts-from-any-cvref<T, expected<U, G>> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, expected<U, G>&> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, expected<U, G>> == false`
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<`[`unexpected`](../unexpected.md)`<E>, const expected<U, G>&> == false`
Expand All @@ -91,6 +91,7 @@ constexpr bool converts-from-any-cvref =
- [`is_same_v`](/reference/type_traits/is_same.md)`<expected,` [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<U>> == false`
- [`is_same_v`](/reference/type_traits/is_same.md)`<`[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<U>,` [`unexpect_t`](../unexpect_t.md)`> == false`
- [`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<U>`は[`unexpected`](../unexpected.md)の特殊化でない
- `T`が cv `bool` の場合、[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<U>`は`expected`の特殊化でない
- [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, U> == true`
- (7) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, const G&> == true`
- (8) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, G> == true`
Expand Down Expand Up @@ -320,5 +321,7 @@ int main()

## 参照
- [P0323R12 std::expected](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
- [LWG Issue 3836. `std::expected<bool, E1>` conversion constructor `expected(const expected<U, G>&)` should take precedence over `expected(U&&)` with operator bool](https://cplusplus.github.io/LWG/issue3836)
- C++23で、`T`が cv `bool` のときに変換コンストラクタ(4)(5)が単一値コンストラクタ(6)に優先されるよう、(4)(5)の`converts-from-any-cvref`制約に「`T`が cv `bool` でない場合」の条件を付け、(6)に「`T`が cv `bool` の場合、`remove_cvref_t<U>`は`expected`の特殊化でない」制約を追加した
- [LWG Issue 4222. `expected` constructor from a single value missing a constraint](https://cplusplus.github.io/LWG/issue4222)
- C++26で、(6)の制約に[`remove_cvref_t`](/reference/type_traits/remove_cvref.md)`<U>`が[`unexpect_t`](../unexpect_t.md)でないことが追加された
6 changes: 4 additions & 2 deletions reference/expected/expected/or_else.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class expected {


## テンプレートパラメータ制約
- (1), (2) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<T> == true`
- (3), (4) : [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<T> == true`
- (1), (2) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, decltype(`[`value()`](value.md)`)> == true`
- (3), (4) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, decltype(`[`std::move`](/reference/utility/move.md)`(`[`value()`](value.md)`))> == true`


## 適格要件
Expand Down Expand Up @@ -137,5 +137,7 @@ int main()

## 参照
- [P2505R5 Monadic Functions for `std::expected`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html)
- [LWG Issue 3877. Incorrect constraints on `const`-qualified monadic overloads for `std::expected`](https://cplusplus.github.io/LWG/issue3877)
- C++23で、`const`修飾版で誤ってエラーになる問題を解消するため、制約が`is_copy_constructible_v<T>`から`is_constructible_v<T, decltype(value())>`(右辺値版は`decltype(std::move(value()))`)へ変更された
- [LWG Issue 3938. Cannot use `std::expected` monadic ops with move-only `error_type`](https://cplusplus.github.io/LWG/issue3938)
- C++26で、効果で正常値へのアクセスに[`value()`](value.md)ではなく[`**this`](op_deref.md)を使うよう修正され、ムーブのみ可能な`error_type`でも使用できるようになった
6 changes: 4 additions & 2 deletions reference/expected/expected/transform.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class expected {


## テンプレートパラメータ制約
- (1), (2) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<E> == true`
- (3), (4) : [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<E> == true`
- (1), (2) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, decltype(`[`error()`](error.md)`)> == true`
- (3), (4) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, decltype(`[`std::move`](/reference/utility/move.md)`(`[`error()`](error.md)`))> == true`


## 適格要件
Expand Down Expand Up @@ -112,5 +112,7 @@ int main()

## 参照
- [P2505R5 Monadic Functions for `std::expected`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html)
- [LWG Issue 3877. Incorrect constraints on `const`-qualified monadic overloads for `std::expected`](https://cplusplus.github.io/LWG/issue3877)
- C++23で、`const`修飾版で誤ってエラーになる問題を解消するため、制約が`is_copy_constructible_v<E>`から`is_constructible_v<E, decltype(error())>`(右辺値版は`decltype(std::move(error()))`)へ変更された
- [LWG Issue 3938. Cannot use `std::expected` monadic ops with move-only `error_type`](https://cplusplus.github.io/LWG/issue3938)
- C++26で、効果および適格要件で正常値へのアクセスに[`value()`](value.md)ではなく[`**this`](op_deref.md)を使うよう修正され、ムーブのみ可能な`error_type`でも使用できるようになった
6 changes: 4 additions & 2 deletions reference/expected/expected/transform_error.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class expected {


## テンプレートパラメータ制約
- (1), (2) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<T> == true`
- (3), (4) : [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<T> == true`
- (1), (2) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, decltype(`[`value()`](value.md)`)> == true`
- (3), (4) : [`is_constructible_v`](/reference/type_traits/is_constructible.md)`<T, decltype(`[`std::move`](/reference/utility/move.md)`(`[`value()`](value.md)`))> == true`


## 適格要件
Expand Down Expand Up @@ -111,5 +111,7 @@ int main()
- [P2505R5 Monadic Functions for `std::expected`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html)
- [LWG Issue 3866. Bad Mandates for `expected::transform_error` overloads](https://cplusplus.github.io/LWG/issue3866)
- C++23で、適格要件が「`G`が`expected`の有効なエラー値型である」から「`G`が[`unexpected`](../unexpected.md)の有効なテンプレート引数である」に修正された(`const int`のように`expected`のエラー値型としては有効でも`unexpected`のテンプレート引数としては無効な型があり、旧文言は実装不能だったため)
- [LWG Issue 3877. Incorrect constraints on `const`-qualified monadic overloads for `std::expected`](https://cplusplus.github.io/LWG/issue3877)
- C++23で、`const`修飾版で誤ってエラーになる問題を解消するため、制約が`is_copy_constructible_v<T>`から`is_constructible_v<T, decltype(value())>`(右辺値版は`decltype(std::move(value()))`)へ変更された
- [LWG Issue 3938. Cannot use `std::expected` monadic ops with move-only `error_type`](https://cplusplus.github.io/LWG/issue3938)
- C++26で、効果で正常値へのアクセスに[`value()`](value.md)ではなく[`**this`](op_deref.md)を使うよう修正され、ムーブのみ可能な`error_type`でも使用できるようになった
9 changes: 8 additions & 1 deletion reference/expected/expected/value.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ constexpr T&& value() &&; // (4)
正常値を取得する。


## 適格要件
- (1), (2) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<E> == true`
- (3), (4) : [`is_copy_constructible_v`](/reference/type_traits/is_copy_constructible.md)`<E> == true`、かつ、[`is_constructible_v`](/reference/type_traits/is_constructible.md)`<E, decltype(`[`std::move`](/reference/utility/move.md)`(`[`error()`](error.md)`))> == true`


## 戻り値
動作説明用のメンバ変数として、正常値を保持する`val`を導入する。

Expand All @@ -28,7 +33,7 @@ constexpr T&& value() &&; // (4)
この関数は、例外を送出しうるため、フリースタンディング処理系では削除される(フリースタンディング処理系では使用できない)。

## 例外
- (1), (2) : エラー値を保持していたら、例外[`bad_expected_access`](../bad_expected_access.md)`(`[`error()`](error.md)`)`を送出する
- (1), (2) : エラー値を保持していたら、例外[`bad_expected_access`](../bad_expected_access.md)`(`[`as_const`](/reference/utility/as_const.md)`(`[`error()`](error.md)`))`を送出する
- (3), (4) : エラー値を保持していたら、例外[`bad_expected_access`](../bad_expected_access.md)`(`[`std::move`](/reference/utility/move.md)`(`[`error()`](error.md)`))`を送出する


Expand Down Expand Up @@ -82,3 +87,5 @@ throw:ERR

## 参照
- [P0323R12 std::expected](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html)
- [LWG Issue 3843. `std::expected<T,E>::value() &` assumes `E` is copy constructible](https://cplusplus.github.io/LWG/issue3843)
- C++23で、`E`のコピー構築可能性等を要求する適格要件が追加され、あわせて(1), (2)が送出する例外が`bad_expected_access(error())`から`bad_expected_access(as_const(error()))`に修正された
2 changes: 2 additions & 0 deletions reference/flat_map/flat_map/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,8 @@ int main()


## 参照
- [LWG Issue 3803. `flat_foo` constructors taking `KeyContainer` lack `KeyCompare` parameter](https://cplusplus.github.io/LWG/issue3803)
- C++23で、コンテナを取るコンストラクタに比較子`key_compare`を明示指定できる引数が追加された
- [LWG Issue 3884. `flat_foo` is missing allocator-extended copy/move constructors](https://cplusplus.github.io/LWG/issue3884)
- C++26で、`flat_map`にアロケータを指定するコピーコンストラクタ(5)とムーブコンストラクタ(6)が追加された
- [P3372R3 constexpr containers and adaptors](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3372r3.html)
2 changes: 2 additions & 0 deletions reference/flat_map/flat_map/op_deduction_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,5 @@ namespace std {

## 参照
- [LWG Issue 3025. Map-like container deduction guides should use `pair<Key, T>`, not `pair<const Key, T>`](https://wg21.cmeerw.net/lwg/issue3025)
- [LWG Issue 3786. Flat maps' deduction guide needs to default `Allocator` to be useful](https://cplusplus.github.io/LWG/issue3786)
- C++23で、`from_range_t`を取る推論補助で`Allocator`テンプレート引数がデフォルト化され、非デフォルトのアロケータのために推論補助が使えなかった問題が修正された。あわせて`(from_range_t, R&&, Allocator)`の推論補助が追加された
2 changes: 2 additions & 0 deletions reference/flat_map/flat_multimap/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,8 @@ int main()


## 参照
- [LWG Issue 3803. `flat_foo` constructors taking `KeyContainer` lack `KeyCompare` parameter](https://cplusplus.github.io/LWG/issue3803)
- C++23で、コンテナを取るコンストラクタに比較子`key_compare`を明示指定できる引数が追加された
- [LWG Issue 3884. `flat_foo` is missing allocator-extended copy/move constructors](https://cplusplus.github.io/LWG/issue3884)
- C++26で、`flat_multimap`にアロケータを指定するコピーコンストラクタ(5)とムーブコンストラクタ(6)が追加された
- [P3372R3 constexpr containers and adaptors](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3372r3.html)
Loading
Loading