Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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: 2 additions & 2 deletions reference/array/to_array.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ namespace std {


## 事前条件
- (1) : `T` は `Cpp17CopyConstructible` 要件を満たしていること。
- (2) : `T` は `Cpp17MoveConstructible` 要件を満たしていること。
- (1) : `T` は [`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink) 要件を満たしていること。
- (2) : `T` は [`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink) 要件を満たしていること。


## 戻り値
Expand Down
6 changes: 3 additions & 3 deletions reference/barrier/barrier.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ namespace std {
完了ステップの終了は、完了ステップによりブロック解除される全ての関数呼び出しからの復帰**よりも確実に前に発生する**。
テンプレートパラメータ`CompletionFunction`のデフォルト値以外の特殊化においては、完了ステップの進行中にバリアオブジェクトの[`wait()`](barrier/wait.md)を除くメンバ関数が呼び出されると、その動作は未定義となる。

テンプレートパラメータ`CompletionFunction`のデフォルト値は、追加で Cpp17DefaultConstructible 要件を満たす未規定の型であり、式`completion()`は何の副作用も生じない。
テンプレートパラメータ`CompletionFunction`のデフォルト値は、追加で [`Cpp17DefaultConstructible`](/requirements/Cpp17DefaultConstructible.md.nolink) 要件を満たす未規定の型であり、式`completion()`は何の副作用も生じない。
つまりテンプレートパラメータを省略した`barrier<>`オブジェクトでは、各フェーズ完了時に追加的な処理を行わない。

`barrier::arrival_token`は、Cpp17MoveConstructible 要件および Cpp17MoveAssignable 要件および Cpp17Destructible 要件を満たす未規定の型。
`barrier::arrival_token`は、[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink) 要件および [`Cpp17MoveAssignable`](/requirements/Cpp17MoveAssignable.md.nolink) 要件および [`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink) 要件を満たす未規定の型。
つまり、コピー不可/ムーブのみ可能な型。


## 適格要件
テンプレートパラメータ`CompletionFunction`は Cpp17MoveConstructible 要件および Cpp17Destructible 要件を満たしていること。
テンプレートパラメータ`CompletionFunction`は [`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink) 要件および [`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink) 要件を満たしていること。
[`is_nothrow_invocable_v`](/reference/type_traits/is_nothrow_invocable.md)`<CompletionFunction&> == true`


Expand Down
2 changes: 1 addition & 1 deletion reference/chrono/is_clock.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,4 @@ int main()

## 参照
- [LWG Issue 4487. Is member `is_steady` of a Cpp17Clock type required to be usable in constant expressions?](https://cplusplus.github.io/LWG/issue4487)
- `C1::is_steady`が定数式で使用できることが要件に追加された。それ以前は`const bool`とだけ規定されており、利用者定義のクロックに対して同じ要求があるかが不明確だった。規格としてはC++29のワーキングドラフトへ適用されたが、未規定だった点の明文化であるため、Cpp17Clock要件が規定されたC++11へ遡及して適用される
- `C1::is_steady`が定数式で使用できることが要件に追加された。それ以前は`const bool`とだけ規定されており、利用者定義のクロックに対して同じ要求があるかが不明確だった。規格としてはC++29のワーキングドラフトへ適用されたが、未規定だった点の明文化であるため、[`Cpp17Clock`](/requirements/Cpp17Clock.md.nolink)要件が規定されたC++11へ遡及して適用される
2 changes: 1 addition & 1 deletion reference/concepts/Invoke.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ C++における関数呼び出しという性質を抽象化しまとめた、
2. *INVOKE*`<R>(f, t1, t2, ..., tN)` を次のように定義する。
- `R`が`void`かそのcv修飾の場合は、`static_cast<void>(`*INVOKE*`(f, t1, t2, ..., tN))`。
- それ以外の場合は、*INVOKE*`(f, t1, t2, ..., tN)` の実行結果の戻り値が型 `R` に暗黙的に変換されること。
3. すべての *call-wrapper* は、*Cpp17MoveConstructible* かつ *Cpp17Destructible* でなければならない。
3. すべての *call-wrapper* は、[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink) かつ [`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink) でなければならない。

## 要件(C++23差分)
C++20 における 2. について、次の文言を項目の最後に追加する。この変更は、`R`が参照かつ*INVOKE*の実行結果が`R`に束縛されることで寿命が延長される場合にダングリング参照が作成されてしまう事例を検出するための要件である。
Expand Down
2 changes: 1 addition & 1 deletion reference/exception/throw_with_nested.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace std {


## 事前条件
`U`を [`decay_t`](/reference/type_traits/decay.md)`<T>` として、型`U`がコピー構築可能(*Cpp17CopyConstructible*)の要件を満たすこと。
`U`を [`decay_t`](/reference/type_traits/decay.md)`<T>` として、型`U`がコピー構築可能([`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink))の要件を満たすこと。


## 例外
Expand Down
2 changes: 1 addition & 1 deletion reference/execution/execution/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ 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)のモデルであること。
`allocator_type`は[`Cpp17Allocator`](/requirements/Cpp17Allocator.md)要件を満たし、`start_scheduler_type`は[`scheduler`](scheduler.md)のモデルであり、`stop_source_type`は[`stoppable-source`](/reference/stop_token/stoppable-source.md)のモデルであること。

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

Expand Down
4 changes: 2 additions & 2 deletions reference/expected/expected.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ namespace std {

- 型`T`および型`E`は、参照型、関数型、[`in_place_t`](/reference/utility/in_place_t.md)、[`unexpect_t`](unexpect_t.md)のいずれでもないこと。
- 型`T`は[`unexpected`](unexpected.md)の特殊化ではないこと。
- 型`T`が(CV修飾された)`void`型でなければ、型`T`はCpp17Destructible要件を満たすこと。
- 型`T`が(CV修飾された)`void`型でなければ、型`T`は[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすこと。
- 型`E`は非オブジェクト型、配列型、`unexpected`の特殊化、CV修飾された型のいずれでもないこと。
- 型`E`はCpp17Destructible要件を満たすこと。
- 型`E`は[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすこと。


## メンバ関数(プライマリテンプレート)
Expand Down
2 changes: 1 addition & 1 deletion reference/format/formatter.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ namespace std {

型`F`がFormatter要件を満たすとは、次のことをいう。

- `F`は`Cpp17DefaultConstructible`、`Cpp17CopyConstructible`、`Cpp17CopyAssignable`、`Cpp17Destructible`であること
- `F`は[`Cpp17DefaultConstructible`](/requirements/Cpp17DefaultConstructible.md.nolink)、[`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink)、[`Cpp17CopyAssignable`](/requirements/Cpp17CopyAssignable.md.nolink)、[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)であること

さらに、以下の条件を満たすこと

Expand Down
6 changes: 3 additions & 3 deletions reference/functional/bind_back.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ namespace std {
[`decay_t`](/reference/type_traits/decay.md)`<F>`を適用した型を`FD`、[`decay_t`](/reference/type_traits/decay.md)`<Args>...`を適用した型パラメータパックを`BoundArgs`として

- (1) :
- `FD`がCpp17MoveConstructible要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[オブジェクト型](/reference/type_traits/is_object.md)である場合、Cpp17MoveConstructible要件を満たすこと
- `FD`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[オブジェクト型](/reference/type_traits/is_object.md)である場合、[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと
- (2) :
- `BoundArgs`のそれぞれの型`Ti`がCpp17MoveConstructible要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと


## 適格要件
Expand Down
6 changes: 3 additions & 3 deletions reference/functional/bind_front.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ auto f3 = bind_front(&Strategy::process, Strategy{});
[`decay_t`](/reference/type_traits/decay.md)`<F>`を適用した型を`FD`、[`decay_t`](/reference/type_traits/decay.md)`<Args>...`を適用した型パラメータパックを`BoundArgs`として

- (1) :
- `FD`がCpp17MoveConstructible要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[オブジェクト型](/reference/type_traits/is_object.md)である場合、Cpp17MoveConstructible要件を満たすこと
- `FD`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[オブジェクト型](/reference/type_traits/is_object.md)である場合、[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと
- (2) :
- `BoundArgs`のそれぞれの型`Ti`がCpp17MoveConstructible要件を満たすこと
- `BoundArgs`のそれぞれの型`Ti`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと


## 適格要件
Expand Down
4 changes: 2 additions & 2 deletions reference/functional/copyable_function/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ explicit copyable_function(in_place_type_t<T>, initializer_list<U>, Args&&...);


## 事前条件
- (5) : `VT`型を`decay_t<F>`としたとき、`VT`がCpp17Destructible要件およびCpp17CopyConstructible要件を満たすこと。
- (6), (7) : `VT`型を`decay_t<T>`としたとき、`VT`がCpp17Destructible要件およびCpp17CopyConstructible要件を満たすこと。
- (5) : `VT`型を`decay_t<F>`としたとき、`VT`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件および[`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink)要件を満たすこと。
- (6), (7) : `VT`型を`decay_t<T>`としたとき、`VT`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件および[`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink)要件を満たすこと。


## 効果
Expand Down
8 changes: 4 additions & 4 deletions reference/functional/move_only_function/op_constructor.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@ explicit move_only_function(in_place_type_t<T>, initializer_list<U>, Args&&...);

## 事前条件
- (4) : `VT`型を`decay_t<F>`としたとき
- `VT`がCpp17Destructible要件を満たすこと。
- [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<VT>`が`true`の場合、`VT`がCpp17MoveConstructible要件を満たすこと。
- `VT`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすこと。
- [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<VT>`が`true`の場合、`VT`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと。
- (5), (6) : `VT`型を`decay_t<T>`としたとき
- `VT`がCpp17Destructible要件を満たすこと。
- [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<VT>`が`true`の場合、`VT`がCpp17MoveConstructible要件を満たすこと。
- `VT`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすこと。
- [`is_move_constructible_v`](/reference/type_traits/is_move_constructible.md)`<VT>`が`true`の場合、`VT`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと。


## 効果
Expand Down
2 changes: 1 addition & 1 deletion reference/functional/not_fn.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace std {


## 事前条件
- (1) : [`decay_t`](/reference/type_traits/decay.md)`<F>`を適用した型を`FD`として、`FD`がCpp17MoveConstructible要件を満たすこと
- (1) : [`decay_t`](/reference/type_traits/decay.md)`<F>`を適用した型を`FD`として、`FD`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと


## 適格要件
Expand Down
4 changes: 2 additions & 2 deletions reference/future/future.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace std {


## 適格要件
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 (`Cpp17Destructible`) なオブジェクト型であること。配列型・関数型は不適格である。
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 ([`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)) なオブジェクト型であること。配列型・関数型は不適格である。


## メンバ関数
Expand Down Expand Up @@ -109,4 +109,4 @@ int main()

## 参照
- [LWG Issue 3466. Specify the requirements for `promise`/`future`/`shared_future` consistently](https://cplusplus.github.io/LWG/issue3466)
- C++23で、テンプレート引数`R`がCpp17Destructible要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
- C++23で、テンプレート引数`R`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
4 changes: 2 additions & 2 deletions reference/future/promise.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ namespace std {


## 適格要件
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 (`Cpp17Destructible`) なオブジェクト型であること。配列型・関数型は不適格である。
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 ([`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)) なオブジェクト型であること。配列型・関数型は不適格である。


## メンバ関数
Expand Down Expand Up @@ -128,4 +128,4 @@ int main()

## 参照
- [LWG Issue 3466. Specify the requirements for `promise`/`future`/`shared_future` consistently](https://cplusplus.github.io/LWG/issue3466)
- C++23で、テンプレート引数`R`がCpp17Destructible要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
- C++23で、テンプレート引数`R`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
4 changes: 2 additions & 2 deletions reference/future/shared_future.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace std {


## 適格要件
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 (`Cpp17Destructible`) なオブジェクト型であること。配列型・関数型は不適格である。
- C++23 : `R`が参照型でも`void`でもない場合、`R`はデストラクト可能 ([`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)) なオブジェクト型であること。配列型・関数型は不適格である。


## メンバ関数
Expand Down Expand Up @@ -112,4 +112,4 @@ int main()

## 参照
- [LWG Issue 3466. Specify the requirements for `promise`/`future`/`shared_future` consistently](https://cplusplus.github.io/LWG/issue3466)
- C++23で、テンプレート引数`R`がCpp17Destructible要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
- C++23で、テンプレート引数`R`が[`Cpp17Destructible`](/requirements/Cpp17Destructible.md.nolink)要件を満たすオブジェクト型でなければならないという要件が一貫して規定された(配列型・関数型は不適格)
2 changes: 1 addition & 1 deletion reference/generator/generator.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ C++コンパイラによっては、ジェネレータコルーチンに関す
- [`common_reference_with`](/reference/concepts/common_reference_with.md)`<reference&&, RRef&&>`
- [`common_reference_with`](/reference/concepts/common_reference_with.md)`<RRef&&, const value&>`

テンプレートパラメータ`Allocator`が`void`ではない場合、`Cpp17Allocator`の要件を満たすこと。
テンプレートパラメータ`Allocator`が`void`ではない場合、[`Cpp17Allocator`](/requirements/Cpp17Allocator.md)の要件を満たすこと。


## メンバ関数
Expand Down
2 changes: 1 addition & 1 deletion reference/hazard_pointer/hazard_pointer_obj_base.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ struct Data : std::hazard_pointer_obj_base<Data> {
## 適格要件
- `T`は不完全型でもよいが、特殊化された`hazard_pointer_obj_base`のメンバが参照されるまでに完全型とすること。
- `D`は関数オブジェクト型であり、`D`型の値`d`と`T*`型の値`ptr`に対して式`d(ptr)`が有効であること。
- `D`型は要件 Cpp17DefaultConstructible および Cpp17MoveAssignable を満たすこと。
- `D`型は要件 [`Cpp17DefaultConstructible`](/requirements/Cpp17DefaultConstructible.md.nolink) および [`Cpp17MoveAssignable`](/requirements/Cpp17MoveAssignable.md.nolink) を満たすこと。


## メンバ関数
Expand Down
4 changes: 2 additions & 2 deletions reference/inplace_vector/inplace_vector/swap.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ constexpr void swap(inplace_vector& x)


## 事前条件
- 型`T`がCpp17MoveConstructible要件を満たすこと。
- 型`T`が[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件を満たすこと。
- `M`を`min(`[`size()`](size.md)`, x.`[`size()`](size.md)`)`とする。`0`以上`M`未満の各整数`n`について、`(*this)[n]`と`x[n]`がswap可能であること。


Expand Down Expand Up @@ -79,4 +79,4 @@ v2: 1 2 3
## 参照
- [P0843R14 `inplace_vector`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0843r14.html)
- [LWG Issue 4151. Precondition of `inplace_vector::swap`](https://cplusplus.github.io/LWG/issue4151)
- C++26で、要素型`T`のCpp17MoveConstructible要件と、対応する要素がswap可能であることの事前条件が明記された
- C++26で、要素型`T`の[`Cpp17MoveConstructible`](/requirements/Cpp17MoveConstructible.md.nolink)要件と、対応する要素がswap可能であることの事前条件が明記された
2 changes: 1 addition & 1 deletion reference/iterator/istream_iterator.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ namespace std {


## 要件
- 型`T`が、デフォルト構築可能(*Cpp17DefaultConstructible*)、コピー構築可能(*Cpp17CopyConstructible*)、かつコピー代入可能(*Cpp17CopyAssignable*)の要件を満たすこと。
- 型`T`が、デフォルト構築可能([`Cpp17DefaultConstructible`](/requirements/Cpp17DefaultConstructible.md.nolink))、コピー構築可能([`Cpp17CopyConstructible`](/requirements/Cpp17CopyConstructible.md.nolink))、かつコピー代入可能([`Cpp17CopyAssignable`](/requirements/Cpp17CopyAssignable.md.nolink))の要件を満たすこと。


## メンバ関数
Expand Down
2 changes: 1 addition & 1 deletion reference/map/multimap/insert.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ constexpr iterator insert(const_iterator hint, node_type&& nh); // (10) C++26
- (1), (4) : `value_type` は、コンテナに対してコピー挿入可能でなければならない。
- (2), (5) : `value_type` は、コンテナに対してムーブ挿入可能でなければならない。
- (3), (6) : `P`から`value_type`が構築可能であること。
- (7), (8) : イテレータ範囲`[first, last)`の各イテレータが、`*this` の要素を指さないこと。また `value_type` は `*first` から`multimap` コンテナへの`Cpp17EmplaceConstructible`であること。
- (7), (8) : イテレータ範囲`[first, last)`の各イテレータが、`*this` の要素を指さないこと。また `value_type` は `*first` から`multimap` コンテナへの[`Cpp17EmplaceConstructible`](/requirements/Cpp17EmplaceConstructible.md.nolink)であること。
- (9), (10) : `nh` は空である、または、`(*this).get_allocator() == nh.get_allocator()`である。

## 効果
Expand Down
Loading
Loading