From 2273c7261b1c4dd66d2e6de80cda52903da563a4 Mon Sep 17 00:00:00 2001 From: Akira Takahashi Date: Thu, 5 Dec 2024 11:54:34 +0900 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E5=B4=A9=E3=82=8C=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=81=AECI=E3=81=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=80=81=E7=AE=87=E6=9D=A1=E6=9B=B8=E3=81=8D=E3=81=AE?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3=E3=83=88=E3=82=92=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=20#1362?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/display_error_check.yml | 19 +++++++ .../workflows/script/display_error_check.py | 57 +++++++++++++++++++ lang/cpp11/static_assert.md | 4 +- lang/cpp17/guaranteed_copy_elision.md | 18 +++--- ...etime_extension_in_range_based_for_loop.md | 4 +- reference/algorithm.md | 8 +-- .../compare/partial_ordering/op_equal.md | 6 +- reference/compare/strong_ordering/op_equal.md | 6 +- reference/compare/weak_ordering/op_equal.md | 6 +- reference/concepts/swap.md | 8 +-- .../copyable_function/op_constructor.md | 4 +- reference/iterator/data.md | 24 ++++---- reference/iterator/empty.md | 24 ++++---- reference/iterator/move_iterator/op_assign.md | 10 ++-- .../iterator/move_iterator/op_constructor.md | 8 +-- .../iterator/reverse_iterator/op_assign.md | 10 ++-- .../reverse_iterator/op_constructor.md | 8 +-- reference/iterator/size.md | 24 ++++---- reference/linalg/hermitian_matrix_product.md | 4 +- .../linalg/hermitian_matrix_rank_1_update.md | 8 +-- .../linalg/hermitian_matrix_rank_2_update.md | 6 +- .../linalg/hermitian_matrix_vector_product.md | 12 ++-- reference/linalg/symmetric_matrix_product.md | 6 +- .../linalg/symmetric_matrix_rank_1_update.md | 8 +-- .../linalg/symmetric_matrix_rank_2_update.md | 6 +- .../linalg/symmetric_matrix_vector_product.md | 8 +-- reference/linalg/triangular_matrix_product.md | 6 +- .../triangular_matrix_vector_product.md | 14 ++--- .../linalg/triangular_matrix_vector_solve.md | 14 ++--- .../ranges_uninitialized_default_construct.md | 2 +- .../memory/uninitialized_default_construct.md | 2 +- .../uninitialized_default_construct_n.md | 2 +- .../node_handle/node_handle/op_assign.md | 9 ++- reference/random/generate_random.md | 2 +- .../op_constructor.md | 2 +- .../basic_streambuf/op_constructor.md | 28 ++++----- reference/type_traits/common_type.md | 4 +- .../unordered_set/unordered_set/insert.md | 2 +- start_editing.md | 2 + 39 files changed, 236 insertions(+), 159 deletions(-) create mode 100644 .github/workflows/display_error_check.yml create mode 100644 .github/workflows/script/display_error_check.py diff --git a/.github/workflows/display_error_check.yml b/.github/workflows/display_error_check.yml new file mode 100644 index 0000000000..54768c9d50 --- /dev/null +++ b/.github/workflows/display_error_check.yml @@ -0,0 +1,19 @@ +name: display error check + +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install requests + - uses: actions/checkout@v4 + - name: check + run: python3 .github/workflows/script/display_error_check.py diff --git a/.github/workflows/script/display_error_check.py b/.github/workflows/script/display_error_check.py new file mode 100644 index 0000000000..c446b805e4 --- /dev/null +++ b/.github/workflows/script/display_error_check.py @@ -0,0 +1,57 @@ +import glob +import os +import sys +import re + +# consider tab +def indent_length(s: str) -> int: + length = 0 + for x in s: + length += 1 if x == " " else 4 + return length + +def check_item_indent(line: str, line_no: int, filename: str) -> bool: + m = re.match(r'^(\s*?)([0-9] \.\s)', line) + if m: + indent: int = indent_length(m[1]) + if indent > 0 and indent % 4 != 0: + print("{}:{}: number item indent {} shoule be 4. line:{}".format(filename, line_no, indent, line)) + return False + return True + + m = re.match(r'^(\s*?)([+-]\s)', line) + if m: + indent: int = indent_length(m[1]) + if indent > 0 and indent % 4 != 0: + print("{}:{}: item indent {} shoule be 4. line:{}".format(filename, line_no, indent, line)) + return False + return True + +def check_display_error(text: str, filename: str) -> bool: + found_error: bool = False + in_code_block: bool = False + + for i, line in enumerate(text.split("\n")): + is_code_block = line.strip().startswith("```") + if is_code_block: + in_code_block = not in_code_block + continue + if in_code_block: + continue + + if not check_item_indent(line, i + 1, filename): + found_error = True + + return not found_error + +if __name__ == '__main__': + found_error = False + for p in sorted(list(glob.glob("**/*.md", recursive=True))): + with open(p) as f: + text = f.read() + + if not check_display_error(text, p): + found_error = True + + if found_error: + sys.exit(1) diff --git a/lang/cpp11/static_assert.md b/lang/cpp11/static_assert.md index 0d76aaab1b..c0d9d15ae5 100644 --- a/lang/cpp11/static_assert.md +++ b/lang/cpp11/static_assert.md @@ -37,7 +37,7 @@ static_assert(定数式, 文字列リテラル); - 定数式が真であると評価された場合は何も効果がない。定数式が偽であると評価された場合は、指定された文字列リテラルを含む診断メッセージがコンパイラによって問題報告される。ただし、基本ソース文字集合に含まれない文字集合は、診断メッセージに表示することはコンパイラに要求されない - `static_assert`宣言では、新たな型やオブジェクトは宣言しない。また、実行時にサイズや時間コストは発生しない - (CWG 2518が適用された環境): template文(もしくは適切な特殊化や[C++17 constexpr if 文](/lang/cpp17/if_constexpr.md)の中の文)が実際にインスタンス化されるまで、`static_assert`文の宣言は遅延される。 - - [C++17 constexpr if 文](/lang/cpp17/if_constexpr.md)の解説を参照 + - [C++17 constexpr if 文](/lang/cpp17/if_constexpr.md)の解説を参照 ## 例 ```cpp example @@ -99,4 +99,4 @@ Boost Static Assertion Libraryが開発されたときに、コンパイル時 - [N1617 Proposal to Add Static Assertions to the Core Language (Revision 2)](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1617.html) - [N1720 Proposal to Add Static Assertions to the Core Language (Revision 3)](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html) - [P2593R1: Allowing static_assert(false)](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2593r1.html) -- [Issue 2518: Conformance requirements and #error/#warning - WG21 CWG Issues](https://wg21.cmeerw.net/cwg/issue2518) \ No newline at end of file +- [Issue 2518: Conformance requirements and #error/#warning - WG21 CWG Issues](https://wg21.cmeerw.net/cwg/issue2518) diff --git a/lang/cpp17/guaranteed_copy_elision.md b/lang/cpp17/guaranteed_copy_elision.md index 4cf9aeef98..c11f847d88 100644 --- a/lang/cpp17/guaranteed_copy_elision.md +++ b/lang/cpp17/guaranteed_copy_elision.md @@ -35,20 +35,20 @@ int k = X().n; // ok, X() prvalue は xvalue に変換される 不必要な一時オブジェクトの作成を避けるために、一時オブジェクトの実体化は一般に可能な限り遅らせる。 注:一時オブジェクトは次のとき実体化されている。 - - - 参照を`prvalue`にバインドするとき - - クラス`prvalue`でメンバアクセスを実行するとき - - 配列からポインタへの変換を実行するとき、または配列`prvalue`をサブスクライブするとき - - `braced-init-list`から`std::initializer_list`型のオブジェクトを初期化するとき - - 特定の未評価のオペランド、および`prvalue`が廃棄値式(`discarded-value expression`)として現れる場合 + +- 参照を`prvalue`にバインドするとき +- クラス`prvalue`でメンバアクセスを実行するとき +- 配列からポインタへの変換を実行するとき、または配列`prvalue`をサブスクライブするとき +- `braced-init-list`から`std::initializer_list`型のオブジェクトを初期化するとき +- 特定の未評価のオペランド、および`prvalue`が廃棄値式(`discarded-value expression`)として現れる場合 これより、上の例は「クラス`prvalue`でメンバアクセスを実行するとき」にあたり、`xvalue`として一時オブジェクトを生成している。 また、`prvalue`から`prvalue`への変換は、上記の「一時オブジェクトの実体化は一般に可能な限り遅らせられる」ことより、一時オブジェクトを実体化しない。よって、次の例における`prvalue`の`T`型の戻り値は、呼び出し元の`t`を直接初期化する。 ```cpp - T Func() {return T();} - T t = Func(); // 直接初期化 +T Func() {return T();} +T t = Func(); // 直接初期化 ``` ## 例 @@ -178,4 +178,4 @@ Foo x = foo(); // error Foo型のコピーコンストラクタが必要 - [Guaranteed Copy Elision](https://jonasdevlieghere.com/guaranteed-copy-elision/) ## 注釈 -1. **^** [右辺値、左辺値などの細かい定義 - Qiita](https://qiita.com/rinse_/items/cffa87016b7de49391ae)を参照 \ No newline at end of file +1. **^** [右辺値、左辺値などの細かい定義 - Qiita](https://qiita.com/rinse_/items/cffa87016b7de49391ae)を参照 diff --git a/lang/cpp23/lifetime_extension_in_range_based_for_loop.md b/lang/cpp23/lifetime_extension_in_range_based_for_loop.md index 7e3e11524f..18a74d5d05 100644 --- a/lang/cpp23/lifetime_extension_in_range_based_for_loop.md +++ b/lang/cpp23/lifetime_extension_in_range_based_for_loop.md @@ -134,7 +134,7 @@ void foo() { - この `t` は "一時オブジェクトの寿命が `for-range-initializer` 完全式の終わりではない場合" にも該当すると考えられる - この `t` は、構文的に見ると `for-range-initializer` の中で生じたとは言えないという意見もある - "`for-range-initializer` の中" を実行時のことだと解釈すると、そこから呼び出された関数の中なども含むことになるが、それを排除する規定が "一時オブジェクトの寿命が `for-range-initializer` 完全式の終わりではない場合" ではないか - - インライン展開されたときなどに効いてくるのかもしれない + - インライン展開されたときなどに効いてくるのかもしれない ## 検討されたほかの選択肢 @@ -149,4 +149,4 @@ void foo() { - [地に足のついた範囲for文 - 地面を見下ろす少年の足蹴にされる私](https://onihusube.hatenablog.com/entry/2022/12/05/000923) - [範囲for文範囲初期化子内の一時オブジェクト延命の説明見直し #1246](https://github.com/cpprefjp/site/issues/1246) -- [Are function parameter objects temporary objects?](https://stackoverflow.com/questions/77676199/are-function-parameter-objects-temporary-objects/77676480) \ No newline at end of file +- [Are function parameter objects temporary objects?](https://stackoverflow.com/questions/77676199/are-function-parameter-objects-temporary-objects/77676480) diff --git a/reference/algorithm.md b/reference/algorithm.md index 34fe94c3f4..0795f49b82 100644 --- a/reference/algorithm.md +++ b/reference/algorithm.md @@ -273,11 +273,11 @@ ranges::sort(pv, {}, &Person::name); - `comp(a, b) && comp(b, c)` は `comp(a, c)` を意味する - `equiv(a, b) && equiv(b, c)` は `equiv(a, c)` を意味する - これらの前提のもと、以下を示すことができる。 +これらの前提のもと、以下を示すことができる。 - - `equiv` は同値関係 (equivalence relation) である - - `comp` は `equiv` によって決まる同値類 (equivalence class) の間での明確な関係を示す - - その示される関係は狭義の全順序 (strict total ordering) である +- `equiv` は同値関係 (equivalence relation) である +- `comp` は `equiv` によって決まる同値類 (equivalence class) の間での明確な関係を示す +- その示される関係は狭義の全順序 (strict total ordering) である 数学用語の日本語訳として "equivalence relation" には「同値関係」 "equivalence class" には「同値類」が定着しており、同じく数学的な文脈では上記 `equiv` を満たす2つの値を「同値」 (equivalent) であると言う。しかし特に数学的でない文脈で「同値」と言った場合は `operator==` による "equal" の関係と誤解される可能性が高いと考えられるため、本サイトでは上記 `equiv` による "equivalent" の関係を「等価」 `operator==` による "equal" の関係を「等値」として区別する。 diff --git a/reference/compare/partial_ordering/op_equal.md b/reference/compare/partial_ordering/op_equal.md index d7627d73a0..e961cf9916 100644 --- a/reference/compare/partial_ordering/op_equal.md +++ b/reference/compare/partial_ordering/op_equal.md @@ -34,9 +34,9 @@ friend constexpr bool operator==(/*unspecified*/, partial_ordering v) noexcept; ## 備考 この演算子により、以下の演算子が使用可能になる: - - `bool operator!=(partial_ordering v, partial_ordering w) noexcept;` - - `bool operator!=(partial_ordering v, /*unspecified*/) noexcept;` - - `bool operator!=(/*unspecified*/, partial_ordering w) noexcept;` +- `bool operator!=(partial_ordering v, partial_ordering w) noexcept;` +- `bool operator!=(partial_ordering v, /*unspecified*/) noexcept;` +- `bool operator!=(/*unspecified*/, partial_ordering w) noexcept;` *unspecified*となっている片側の引数には`0`リテラルのみが使用できる。それ以外の物を渡した場合、動作は未定義。 diff --git a/reference/compare/strong_ordering/op_equal.md b/reference/compare/strong_ordering/op_equal.md index 9f05e31d79..421860f86a 100644 --- a/reference/compare/strong_ordering/op_equal.md +++ b/reference/compare/strong_ordering/op_equal.md @@ -34,9 +34,9 @@ friend constexpr bool operator==(/*unspecified*/, strong_ordering v) noexcept; ## 備考 この演算子により、以下の演算子が使用可能になる: - - `bool operator!=(strong_ordering v, strong_ordering w) noexcept;` - - `bool operator!=(strong_ordering v, /*unspecified*/) noexcept;` - - `bool operator!=(/*unspecified*/, strong_ordering w) noexcept;` +- `bool operator!=(strong_ordering v, strong_ordering w) noexcept;` +- `bool operator!=(strong_ordering v, /*unspecified*/) noexcept;` +- `bool operator!=(/*unspecified*/, strong_ordering w) noexcept;` *unspecified*となっている片側の引数には`0`リテラルのみが使用できる。それ以外の物を渡した場合、動作は未定義。 diff --git a/reference/compare/weak_ordering/op_equal.md b/reference/compare/weak_ordering/op_equal.md index f7f8ec4a22..c6eba5fdb9 100644 --- a/reference/compare/weak_ordering/op_equal.md +++ b/reference/compare/weak_ordering/op_equal.md @@ -34,9 +34,9 @@ friend constexpr bool operator==(/*unspecified*/, weak_ordering v) noexcept; / ## 備考 この演算子により、以下の演算子が使用可能になる: - - `bool operator!=(weak_ordering v, weak_ordering w) noexcept;` - - `bool operator!=(weak_ordering v, /*unspecified*/) noexcept;` - - `bool operator!=(/*unspecified*/, weak_ordering w) noexcept;` +- `bool operator!=(weak_ordering v, weak_ordering w) noexcept;` +- `bool operator!=(weak_ordering v, /*unspecified*/) noexcept;` +- `bool operator!=(/*unspecified*/, weak_ordering w) noexcept;` *unspecified*となっている片側の引数には`0`リテラルのみが使用できる。それ以外の物を渡した場合、動作は未定義。 diff --git a/reference/concepts/swap.md b/reference/concepts/swap.md index 726018ae08..f04d019269 100644 --- a/reference/concepts/swap.md +++ b/reference/concepts/swap.md @@ -29,7 +29,7 @@ namespace std::ranges { ``` 2. `a, b`が共に同じ長さの配列型の左辺値であり、`ranges::swap(*a, *b)`が呼び出し可能ならば`ranges::swap_ranges(a, b)` - - 1か3に委譲して要素毎に`swap`される + - 1か3に委譲して要素毎に`swap`される 3. `a, b`が共に同じ型`T`の左辺値であり、`T`と`T&`は[`move_constructible`](move_constructible.md)及び[`assignable_from`](assignable_from.md)のモデルとなる場合、[`std::swap()`](/reference/utility/swap.md)相当の操作によって`a, b`の値を交換する。 @@ -56,9 +56,9 @@ namespace std::ranges { 1. 呼び出される`swap(a, b)`(及び、もし返されるのならば戻り値のデストラクタ)が定数評価可能であるかに従う。 2. `a, b`の要素型によって、1か3に従う 3. 以下の条件を全て満たす場合に定数評価可能 - - `T`はリテラル型である - - `a = std::move(b), b = std::move(a)`は共に定数評価可能 - - 次のような初期化式が定数評価可能 + - `T`はリテラル型である + - `a = std::move(b), b = std::move(a)`は共に定数評価可能 + - 次のような初期化式が定数評価可能 ```cpp T t1(std::move(a)); T t2(std::move(b)); diff --git a/reference/functional/copyable_function/op_constructor.md b/reference/functional/copyable_function/op_constructor.md index 3db59be242..50abbe1828 100644 --- a/reference/functional/copyable_function/op_constructor.md +++ b/reference/functional/copyable_function/op_constructor.md @@ -66,8 +66,8 @@ explicit copyable_function(in_place_type_t, initializer_list, Args&&...); ## 効果 - (1), (2) : 関数を持たない空の`copyable_function`オブジェクトを構築する。この方法で構築した後、[`operator bool`](op_bool.md)は`false`を返す。 - (3) : `*this`の格納オブジェクトを - - `f`が値を保持していない場合、値を保持しない。 - - そうでなければ、`f`が保持する値をコピーして保持する。 + - `f`が値を保持していない場合、値を保持しない。 + - そうでなければ、`f`が保持する値をコピーして保持する。 - (4) : `f`が保持する状態を`*this`に移動する。移動された後の`f`は、未規定な値を持つ有効な状態となる。 - (5) : `*this`の格納オブジェクトを - `f`が関数ポインタ型、メンバ関数ポインタ型、メンバ変数ポインタ型いずれかのヌルポインタ値の場合、値を保持しない。 diff --git a/reference/iterator/data.md b/reference/iterator/data.md index ed7f419c8c..f4a8964c5e 100644 --- a/reference/iterator/data.md +++ b/reference/iterator/data.md @@ -34,18 +34,18 @@ namespace std { ## 備考 - [機能テストマクロ](../../lang/cpp17/feature_test_macros.md)は`__cpp_lib_nonmember_container_access`で値は`201411` - ``ヘッダを読み込む以外では、以下のヘッダが読み込まれている場合に、この関数を使用できる: - - [``](../array.md) - - [``](../deque.md) - - [``](../forward_list.md) - - [``](../list.md) - - [``](../map.md) - - [``](../regex.md) - - [``](../set.md) - - [``](../string.md) - - [``](../string_view.md) (C++20) - - [``](../unordered_map.md) - - [``](../unordered_set.md) - - [``](../vector.md) + - [``](../array.md) + - [``](../deque.md) + - [``](../forward_list.md) + - [``](../list.md) + - [``](../map.md) + - [``](../regex.md) + - [``](../set.md) + - [``](../string.md) + - [``](../string_view.md) (C++20) + - [``](../unordered_map.md) + - [``](../unordered_set.md) + - [``](../vector.md) ## 例 diff --git a/reference/iterator/empty.md b/reference/iterator/empty.md index d0f3c93735..63e62f390b 100644 --- a/reference/iterator/empty.md +++ b/reference/iterator/empty.md @@ -40,18 +40,18 @@ namespace std { ## 備考 - [機能テストマクロ](../../lang/cpp17/feature_test_macros.md)は`__cpp_lib_nonmember_container_access`で値は`201411` - ``ヘッダを読み込む以外では、以下のヘッダが読み込まれている場合に、この関数を使用できる: - - [``](../array.md) - - [``](../deque.md) - - [``](../forward_list.md) - - [``](../list.md) - - [``](../map.md) - - [``](../regex.md) - - [``](../set.md) - - [``](../string.md) - - [``](../string_view.md) (C++20) - - [``](../unordered_map.md) - - [``](../unordered_set.md) - - [``](../vector.md) + - [``](../array.md) + - [``](../deque.md) + - [``](../forward_list.md) + - [``](../list.md) + - [``](../map.md) + - [``](../regex.md) + - [``](../set.md) + - [``](../string.md) + - [``](../string_view.md) (C++20) + - [``](../unordered_map.md) + - [``](../unordered_set.md) + - [``](../vector.md) ## 例 diff --git a/reference/iterator/move_iterator/op_assign.md b/reference/iterator/move_iterator/op_assign.md index 42def6003d..90291eae8c 100644 --- a/reference/iterator/move_iterator/op_assign.md +++ b/reference/iterator/move_iterator/op_assign.md @@ -24,12 +24,12 @@ constexpr move_iterator& operator=(move_iterator&&) = default; // (3) C++17 ## テンプレートパラメータ制約 - C++17まで - - (1) : `U`が`Iterator`に変換可能であること + - (1) : `U`が`Iterator`に変換可能であること - C++20 - - (1) : 次の両方を満たす - - `is_same_v == false`であること。 - - `const U&`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 - - `Iterator&, const U&`が[`assignable_from`](/reference/concepts/assignable_from.md)のモデルとなること。 + - (1) : 次の両方を満たす + - `is_same_v == false`であること。 + - `const U&`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 + - `Iterator&, const U&`が[`assignable_from`](/reference/concepts/assignable_from.md)のモデルとなること。 ## 例 diff --git a/reference/iterator/move_iterator/op_constructor.md b/reference/iterator/move_iterator/op_constructor.md index 5c9df17b9e..b617d135bc 100644 --- a/reference/iterator/move_iterator/op_constructor.md +++ b/reference/iterator/move_iterator/op_constructor.md @@ -31,11 +31,11 @@ constexpr move_iterator(move_iterator&&) noexcept = default; // (4) C++17 ## テンプレートパラメータ制約 - C++17まで - - (3) : `U`が`Iterator`に変換可能であること + - (3) : `U`が`Iterator`に変換可能であること - C++20 - - (3) : 次の全てを満たす - - `is_same_v == false`であること。 - - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 + - (3) : 次の全てを満たす + - `is_same_v == false`であること。 + - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 ## 例 ```cpp example diff --git a/reference/iterator/reverse_iterator/op_assign.md b/reference/iterator/reverse_iterator/op_assign.md index 2f35f6909d..fb4db494ad 100644 --- a/reference/iterator/reverse_iterator/op_assign.md +++ b/reference/iterator/reverse_iterator/op_assign.md @@ -20,12 +20,12 @@ constexpr reverse_iterator& operator=(const reverse_iterator& u); // ( ## テンプレートパラメータ制約 - C++17まで - - (2) : `U`が`Iterator`に変換可能であること + - (2) : `U`が`Iterator`に変換可能であること - C++20 - - (2) : 次の両方を満たす - - `is_same_v == false`であること。 - - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 - - `Iterator&, const U&`が[`assignable_from`](/reference/concepts/assignable_from.md)のモデルとなること。 + - (2) : 次の両方を満たす + - `is_same_v == false`であること。 + - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 + - `Iterator&, const U&`が[`assignable_from`](/reference/concepts/assignable_from.md)のモデルとなること。 ## 戻り値 diff --git a/reference/iterator/reverse_iterator/op_constructor.md b/reference/iterator/reverse_iterator/op_constructor.md index 6f1dcadc67..35c326ceab 100644 --- a/reference/iterator/reverse_iterator/op_constructor.md +++ b/reference/iterator/reverse_iterator/op_constructor.md @@ -28,11 +28,11 @@ constexpr reverse_iterator(const reverse_iterator& u); // (3) C++17 ## テンプレートパラメータ制約 - C++17まで - - (3) : `U`が`Iterator`に変換可能であること + - (3) : `U`が`Iterator`に変換可能であること - C++20 - - (3) : 次の両方を満たす - - `is_same_v == false`であること。 - - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 + - (3) : 次の両方を満たす + - `is_same_v == false`であること。 + - `const U&, Iterator`が[`convertible_to`](/reference/concepts/convertible_to.md)のモデルとなること。 ## 要件 - (3) : `U`が`Iterator`に変換可能であること diff --git a/reference/iterator/size.md b/reference/iterator/size.md index cba14eef4b..21906c4d58 100644 --- a/reference/iterator/size.md +++ b/reference/iterator/size.md @@ -26,18 +26,18 @@ namespace std { ## 備考 - [機能テストマクロ](../../lang/cpp17/feature_test_macros.md)は`__cpp_lib_nonmember_container_access`で値は`201411` - ``ヘッダを読み込む以外では、以下のヘッダが読み込まれている場合に、この関数を使用できる: - - [``](../array.md) - - [``](../deque.md) - - [``](../forward_list.md) - - [``](../list.md) - - [``](../map.md) - - [``](../regex.md) - - [``](../set.md) - - [``](../string.md) - - [``](../string_view.md) (C++20) - - [``](../unordered_map.md) - - [``](../unordered_set.md) - - [``](../vector.md) + - [``](../array.md) + - [``](../deque.md) + - [``](../forward_list.md) + - [``](../list.md) + - [``](../map.md) + - [``](../regex.md) + - [``](../set.md) + - [``](../string.md) + - [``](../string_view.md) (C++20) + - [``](../unordered_map.md) + - [``](../unordered_set.md) + - [``](../vector.md) ## 例 diff --git a/reference/linalg/hermitian_matrix_product.md b/reference/linalg/hermitian_matrix_product.md index 1f50e37d41..ab9ab2f33e 100644 --- a/reference/linalg/hermitian_matrix_product.md +++ b/reference/linalg/hermitian_matrix_product.md @@ -124,10 +124,10 @@ namespace std::linalg { - 共通 + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - - (1), (2), (5), (6): +- (1), (2), (5), (6): + `InMat1`(`A`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - - (3), (4), (7), (8): +- (3), (4), (7), (8): + `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`B`が正方行列であること) - (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`()`が`true` diff --git a/reference/linalg/hermitian_matrix_rank_1_update.md b/reference/linalg/hermitian_matrix_rank_1_update.md index 0aaf1dd6dd..2211afe13e 100644 --- a/reference/linalg/hermitian_matrix_rank_1_update.md +++ b/reference/linalg/hermitian_matrix_rank_1_update.md @@ -66,10 +66,10 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) - (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` diff --git a/reference/linalg/hermitian_matrix_rank_2_update.md b/reference/linalg/hermitian_matrix_rank_2_update.md index f42c7b9f85..514255df12 100644 --- a/reference/linalg/hermitian_matrix_rank_2_update.md +++ b/reference/linalg/hermitian_matrix_rank_2_update.md @@ -43,9 +43,9 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` diff --git a/reference/linalg/hermitian_matrix_vector_product.md b/reference/linalg/hermitian_matrix_vector_product.md index c56c46d0d1..8b0f40f3c3 100644 --- a/reference/linalg/hermitian_matrix_vector_product.md +++ b/reference/linalg/hermitian_matrix_vector_product.md @@ -74,18 +74,18 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - (3), (4): [`possibly-addable`](possibly-addable.md)`()`が`true` - (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` ## 事前条件 - 共通: - + `A.extent(0) == A.extent(1)` - + [`multipliable`](multipliable.md)`(A, x, y) == true` + + `A.extent(0) == A.extent(1)` + + [`multipliable`](multipliable.md)`(A, x, y) == true` - (3), (4): [`addable`](addable.md)`(x, y, z) == true` diff --git a/reference/linalg/symmetric_matrix_product.md b/reference/linalg/symmetric_matrix_product.md index 3c3b35acfa..e71eb1d41d 100644 --- a/reference/linalg/symmetric_matrix_product.md +++ b/reference/linalg/symmetric_matrix_product.md @@ -124,10 +124,10 @@ namespace std::linalg { - 共通 + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - - (1), (2), (5), (6): +- (1), (2), (5), (6): + `InMat1`(`A`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - - (3), (4), (7), (8): +- (3), (4), (7), (8): + `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`B`が正方行列であること) - (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`()`が`true` @@ -136,7 +136,7 @@ namespace std::linalg { ## 事前条件 - 共通 - + [`multipliable`](multipliable.md)`(A, B, C) == true` + + [`multipliable`](multipliable.md)`(A, B, C) == true` - (1), (2), (5), (6): `A.extent(0) == A.extent(1)` - (3), (4), (7), (8): `B.extent(0) == B.extent(1)` - (5), (6), (7), (8): [`addable`](addable.md)`(E, E, C) == true` diff --git a/reference/linalg/symmetric_matrix_rank_1_update.md b/reference/linalg/symmetric_matrix_rank_1_update.md index 1c3c08789a..a4d66f1fb3 100644 --- a/reference/linalg/symmetric_matrix_rank_1_update.md +++ b/reference/linalg/symmetric_matrix_rank_1_update.md @@ -63,10 +63,10 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) - (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` diff --git a/reference/linalg/symmetric_matrix_rank_2_update.md b/reference/linalg/symmetric_matrix_rank_2_update.md index 92c8b7da46..a00862056e 100644 --- a/reference/linalg/symmetric_matrix_rank_2_update.md +++ b/reference/linalg/symmetric_matrix_rank_2_update.md @@ -43,9 +43,9 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - (2): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` ## 事前条件 diff --git a/reference/linalg/symmetric_matrix_vector_product.md b/reference/linalg/symmetric_matrix_vector_product.md index 1dc63373a6..193260dfa8 100644 --- a/reference/linalg/symmetric_matrix_vector_product.md +++ b/reference/linalg/symmetric_matrix_vector_product.md @@ -70,10 +70,10 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - (3), (4): [`possibly-addable`](possibly-addable.md)`()`が`true` - (2), (4): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` diff --git a/reference/linalg/triangular_matrix_product.md b/reference/linalg/triangular_matrix_product.md index 5d20663ff2..ef75266e07 100644 --- a/reference/linalg/triangular_matrix_product.md +++ b/reference/linalg/triangular_matrix_product.md @@ -141,10 +141,10 @@ namespace std::linalg { + `DiagonalStorage`が[`implicit_unit_diagonal_t`](implicit_unit_diagonal_t.md)または[`explicit_diagonal_t`](explicit_diagonal_t.md) + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + [`possibly-multipliable`](possibly-multipliable.md)`()`が`true` - - (1), (2), (5), (6): +- (1), (2), (5), (6): + `InMat1`(`A`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - - (3), (4), (7), (8): +- (3), (4), (7), (8): + `InMat2`(`B`の型)が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`B`が正方行列であること) - (5), (6), (7), (8): [`possibly-addable`](possibly-addable.md)`()`が`true` @@ -153,7 +153,7 @@ namespace std::linalg { ## 事前条件 - 共通 - + [`multipliable`](multipliable.md)`(A, B, C) == true` + + [`multipliable`](multipliable.md)`(A, B, C) == true` - (1), (2), (5), (6): `A.extent(0) == A.extent(1)` - (3), (4), (7), (8): `B.extent(0) == B.extent(1)` - (5), (6), (7), (8): [`addable`](addable.md)`(E, E, C) == true` diff --git a/reference/linalg/triangular_matrix_vector_product.md b/reference/linalg/triangular_matrix_vector_product.md index 8e835bebc0..28df94dbec 100644 --- a/reference/linalg/triangular_matrix_vector_product.md +++ b/reference/linalg/triangular_matrix_vector_product.md @@ -103,11 +103,11 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `DiagonalStorage`は[`implicit_unit_diagonal_t`](implicit_unit_diagonal_t.md)または[`explicit_diagonal_t`](explicit_diagonal_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`y`の次元が同じであること) + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `DiagonalStorage`は[`implicit_unit_diagonal_t`](implicit_unit_diagonal_t.md)または[`explicit_diagonal_t`](explicit_diagonal_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`y`の次元が同じであること) - (1), (2), (5), (6): [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) - (5), (6): [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`x`の次元が同じであること) - (2), (4), (6): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` @@ -115,8 +115,8 @@ namespace std::linalg { ## 事前条件 - 共通: - + `A.extent(0) == A.extent(1)` (つまり`A`が正方行列であること) - + `A.extent(0) == y.extent(0)` (つまり`y`に結果を代入できること) + + `A.extent(0) == A.extent(1)` (つまり`A`が正方行列であること) + + `A.extent(0) == y.extent(0)` (つまり`y`に結果を代入できること) - (1), (2), (5), (6): `A.extent(0) == x.extent(0)` (つまり$Ax$を計算できること) - (5), (6): `A.extent(0) == z.extent(0)` (つまり`z`に結果を代入できること) diff --git a/reference/linalg/triangular_matrix_vector_solve.md b/reference/linalg/triangular_matrix_vector_solve.md index d680f94655..94b17c28bf 100644 --- a/reference/linalg/triangular_matrix_vector_solve.md +++ b/reference/linalg/triangular_matrix_vector_solve.md @@ -134,19 +134,19 @@ namespace std::linalg { ## 適格要件 - 共通: - + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) - + `DiagonalStorage`は[`implicit_unit_diagonal_t`](implicit_unit_diagonal_t.md)または[`explicit_diagonal_t`](explicit_diagonal_t.md) - + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) - + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`b`の次元が同じであること) + + `Triangle`は[`upper_triangle_t`](upper_triangle_t.md)または[`lower_triangle_t`](lower_triangle_t.md) + + `DiagonalStorage`は[`implicit_unit_diagonal_t`](implicit_unit_diagonal_t.md)または[`explicit_diagonal_t`](explicit_diagonal_t.md) + + `InMat`が[`layout_blas_packed`](layout_blas_packed.md)を持つなら、レイアウトの`Triangle`テンプレート引数とこの関数の`Triangle`テンプレート引数が同じ型 + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 1)`が`true` (つまり`A`が正方行列であること) + + [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`b`の次元が同じであること) - (1), (2), (3), (4): [`compatible-static-extents`](compatible-static-extents.md)`(0, 0)`が`true` (つまり`A`の次元と`b`の次元が同じであること) - (2), (4), (6), (8): [`is_execution_policy`](/reference/execution/is_execution_policy.md)`::value`が`true` ## 事前条件 - 共通: - + `A.extent(0) == A.extent(1)` (つまり`A`が正方行列であること) - + `A.extent(0) == b.extent(0)` (つまり`A`の次元と`b`の次元が同じであること) + + `A.extent(0) == A.extent(1)` (つまり`A`が正方行列であること) + + `A.extent(0) == b.extent(0)` (つまり`A`の次元と`b`の次元が同じであること) - (1), (2), (3), (4): `A.extent(0) == x.extent(0)` (つまり`A`の次元と`x`の次元が同じであること) diff --git a/reference/memory/ranges_uninitialized_default_construct.md b/reference/memory/ranges_uninitialized_default_construct.md index ee6fac6fab..732025acc1 100644 --- a/reference/memory/ranges_uninitialized_default_construct.md +++ b/reference/memory/ranges_uninitialized_default_construct.md @@ -68,7 +68,7 @@ return first; ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 - - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある + - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある ## 例 diff --git a/reference/memory/uninitialized_default_construct.md b/reference/memory/uninitialized_default_construct.md index 64df4a7ddd..bd9133eb88 100644 --- a/reference/memory/uninitialized_default_construct.md +++ b/reference/memory/uninitialized_default_construct.md @@ -44,7 +44,7 @@ for (; first != last; ++first) ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 - - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある + - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある ### 例 diff --git a/reference/memory/uninitialized_default_construct_n.md b/reference/memory/uninitialized_default_construct_n.md index 104b396f2c..c489c0e845 100644 --- a/reference/memory/uninitialized_default_construct_n.md +++ b/reference/memory/uninitialized_default_construct_n.md @@ -43,7 +43,7 @@ return first; ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 - - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある + - 例としてBoost Container Libraryの`vector`クラスには、要素数を変更するメンバ関数にデフォルト構築のオプションとして[`default_init`](https://www.boost.org/doc/libs/release/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization)がある ### 例 diff --git a/reference/node_handle/node_handle/op_assign.md b/reference/node_handle/node_handle/op_assign.md index f72652e477..efa67a46f9 100644 --- a/reference/node_handle/node_handle/op_assign.md +++ b/reference/node_handle/node_handle/op_assign.md @@ -19,11 +19,10 @@ node_handle& operator=(node_handle&& nh); ## 効果 - `ptr_ != nullptr` の場合、 - - `std::allocator_traits::destroy` を呼び出して `ptr_` が指す `container_node_type` オブジェクト内の `value_type` サブオブジェクトを破棄し、 - - 次に `std::allocator_traits::template rebind_traits::deallocate` を呼び出して `ptr_` の割り当てを解除する。 - -- `ptr_` に `nh.ptr_` を代入する。 -- `!alloc_` または `std::allocator_traits::propagate_on_container_move_assignment::value` が `true` の場合、`nh.alloc_` を `alloc_` にムーブ代入する。 + - `std::allocator_traits::destroy` を呼び出して `ptr_` が指す `container_node_type` オブジェクト内の `value_type` サブオブジェクトを破棄し、 + - 次に `std::allocator_traits::template rebind_traits::deallocate` を呼び出して `ptr_` の割り当てを解除する。 +- `ptr_` に `nh.ptr_` を代入する。 +- `!alloc_` または `std::allocator_traits::propagate_on_container_move_assignment::value` が `true` の場合、`nh.alloc_` を `alloc_` にムーブ代入する。 - `nh.ptr_` に `nullptr` を代入し、`nh.alloc_` に `nullopt` を代入する。 diff --git a/reference/random/generate_random.md b/reference/random/generate_random.md index b13fab2c8a..254bb192a8 100644 --- a/reference/random/generate_random.md +++ b/reference/random/generate_random.md @@ -94,7 +94,7 @@ for (auto& x : v) { * std::move[link /reference/utility/move.md] - (3) : - - `d.generate_random(`[`std::forward`](/reference/utility/forward.md)`(r), g)`が妥当な式であれば、それを呼び出す + - `d.generate_random(`[`std::forward`](/reference/utility/forward.md)`(r), g)`が妥当な式であれば、それを呼び出す - 備考 : 分布生成器が`generate_random()`メンバ関数をもっていればそれを使用する - そうでなく、`R`が[`sized_range`](/reference/ranges/sized_range.md)のモデルである場合、値`N`と[`span`](/reference/span/span.md)`<`[`invoke_result_t`](/reference/type_traits/invoke_result.md)`, N>`型オブジェクト`s`に対して、式[`invoke`](/reference/functional/invoke.md)`(d, g)`または`d.generate_random(s, g)`を未規定の回数だけ呼び出して実行し、`r`の各要素に代入する - 備考 : ここでの`N`は乱数生成の回数と異なってもよい diff --git a/reference/random/subtract_with_carry_engine/op_constructor.md b/reference/random/subtract_with_carry_engine/op_constructor.md index 7ac7e3709d..a954e310da 100644 --- a/reference/random/subtract_with_carry_engine/op_constructor.md +++ b/reference/random/subtract_with_carry_engine/op_constructor.md @@ -23,7 +23,7 @@ subtract_with_carry_engine(subtract_with_carry_engine&& e) = default; // (5 ## 概要 - (1) : デフォルトコンストラクタ - C++17まで:シード値が指定されない場合はデフォルトのシード値 (`subtract_with_carry_engine::default_seed`) で構築される - - [`linear_congruential_engine`](../linear_congruential_engine.md) を $n = \lceil 32 / \mathtt{w} \rceil$ 回 (`w` は `subtract_with_carry_engine::word_size`) 呼び出して内部状態を初期化する + - [`linear_congruential_engine`](../linear_congruential_engine.md) を $n = \lceil 32 / \mathtt{w} \rceil$ 回 (`w` は `subtract_with_carry_engine::word_size`) 呼び出して内部状態を初期化する - C++20から : デフォルトのシード値 (`subtract_with_carry_engine::default_seed`) で(2)に委譲 - C++26から : シード値を`0u`として(2)に委譲 - (2) : シード値を受け取って状態シーケンスを構築する diff --git a/reference/streambuf/basic_streambuf/op_constructor.md b/reference/streambuf/basic_streambuf/op_constructor.md index 3aed4eb9a8..c764eb4d4c 100644 --- a/reference/streambuf/basic_streambuf/op_constructor.md +++ b/reference/streambuf/basic_streambuf/op_constructor.md @@ -30,21 +30,21 @@ namespace std { ## 事後条件 - (1) : - - `eback()` == `nullptr` - - `gptr()` == `nullptr` - - `egptr()` == `nullptr` - - `pbase()` == `nullptr` - - `pptr()` == `nullptr` - - `epptr()` == `nullptr` - - `getloc()` == `locale()` + - `eback()` == `nullptr` + - `gptr()` == `nullptr` + - `egptr()` == `nullptr` + - `pbase()` == `nullptr` + - `pptr()` == `nullptr` + - `epptr()` == `nullptr` + - `getloc()` == `locale()` - (2) : - - `eback()` == `rhs.eback()` - - `gptr()` == `rhs.gptr()` - - `egptr()` == `rhs.egptr()` - - `pbase()` == `rhs.pbase()` - - `pptr()` == `rhs.pptr()` - - `epptr()` == `rhs.epptr()` - - `getloc()` == `rhs.getloc()` + - `eback()` == `rhs.eback()` + - `gptr()` == `rhs.gptr()` + - `egptr()` == `rhs.egptr()` + - `pbase()` == `rhs.pbase()` + - `pptr()` == `rhs.pptr()` + - `epptr()` == `rhs.epptr()` + - `getloc()` == `rhs.getloc()` ## 実装例 diff --git a/reference/type_traits/common_type.md b/reference/type_traits/common_type.md index 1a0d91e091..6ef83f500b 100644 --- a/reference/type_traits/common_type.md +++ b/reference/type_traits/common_type.md @@ -64,8 +64,8 @@ namespace std { `common_type`は以下の条件を満たす場合に、2引数のもの(`common_type`)に限ってユーザー定義の特殊化が許可されている。 - `T1, T2`の少なくとも片方はプログラム定義型に依存している - - プログラム定義型とは、標準ライブラリの型を除いた、ユーザーによって定義された型のこと - - 「プログラム定義型に依存している」とは例えば、プログラム定義型に対する`vector`等の特殊化のこと + - プログラム定義型とは、標準ライブラリの型を除いた、ユーザーによって定義された型のこと + - 「プログラム定義型に依存している」とは例えば、プログラム定義型に対する`vector`等の特殊化のこと - `T1, T2`に対する[`decay`](/reference/type_traits/decay.md)の適用はともに恒等写像となる(上記参照) そして、そのような特殊化は必ずしもメンバ型`type`を持たなくても構わない。 diff --git a/reference/unordered_set/unordered_set/insert.md b/reference/unordered_set/unordered_set/insert.md index c6eb0e16e0..ffa4344d83 100644 --- a/reference/unordered_set/unordered_set/insert.md +++ b/reference/unordered_set/unordered_set/insert.md @@ -106,7 +106,7 @@ iterator insert(const_iterator hint, node_type&& nh); // (6) C++17 のいずれかである。 なお、後者の条件は「よりも小さい」となっているが、最大負荷率の定義からすると「以下」の方が適切と思われる。[`reserve`](reserve.md) も参照。 - - (5), (6) の場合、要素はコピーもムーブもされない。 +- (5), (6) の場合、要素はコピーもムーブもされない。 ## 例 diff --git a/start_editing.md b/start_editing.md index 94bbf58919..f531cda398 100644 --- a/start_editing.md +++ b/start_editing.md @@ -60,6 +60,8 @@ buildアクションで、MarkdownからHTMLへの変換と、GitHub Pagesへの - 用語の誤った使い方を検出 (defined word checkアクション) - 用語の許可した使い方、許可しない使い方を列挙し、許可した使い方以外の使われ方をエラーとして検出する - 具体的な用語、許可した使い方、許可しない使い方は、[defined_word_check.py](https://github.com/cpprefjp/site/blob/master/.github/workflows/script/defined_word_check.py)を参照 +- 表示崩れする書き方を検出 (display error checkアクション) + - 箇条書きのインデントが4の倍数でない行をエラーとして検出する ### 自動反映ツール