From 44e51113a40fd217b00231ee404f8e42649a0666 Mon Sep 17 00:00:00 2001 From: yoh Date: Tue, 31 Jan 2023 14:11:27 +0900 Subject: [PATCH] =?UTF-8?q?expected/expected:=20operator=3D=E8=AA=BF?= =?UTF-8?q?=E6=95=B4(#1066)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit パラメータ名明記, 内部リンク追加 --- reference/expected/expected/op_assign.md | 38 ++++++++++--------- reference/expected/expected/op_constructor.md | 4 +- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/reference/expected/expected/op_assign.md b/reference/expected/expected/op_assign.md index 103e901f9e..0f9011829b 100644 --- a/reference/expected/expected/op_assign.md +++ b/reference/expected/expected/op_assign.md @@ -6,18 +6,18 @@ * cpp23[meta cpp] ```cpp -constexpr expected& operator=(const expected&); // (1) +constexpr expected& operator=(const expected& rhs); // (1) -constexpr expected& operator=(expected&&) noexcept(see below); // (2) +constexpr expected& operator=(expected&& rhs) noexcept(see below); // (2) template -constexpr expected& operator=(U&&); // (3) +constexpr expected& operator=(U&& v); // (3) template -constexpr expected& operator=(const unexpected&); // (4) +constexpr expected& operator=(const unexpected& e); // (4) template -constexpr expected& operator=(unexpected&&); // (5) +constexpr expected& operator=(unexpected&& e); // (5) ``` * see below[italic] * unexpected[link ../unexpected.md] @@ -65,7 +65,8 @@ constexpr void reinit-expected(T& newval, U& oldval, Args&&... args) { * destroy_at[link /reference/memory/destroy_at.md] * is_nothrow_constructible_v[link /reference/type_traits/is_nothrow_constructible.md] * is_nothrow_move_constructible_v[link /reference/type_traits/is_nothrow_move_constructible.md] - +* std::forward[link /reference/utility/forward.md] +* std::move[link /reference/utility/move.md] ## テンプレートパラメータ制約 - (2) : 下記を全て満たすこと @@ -93,26 +94,26 @@ constexpr void reinit-expected(T& newval, U& oldval, Args&&... args) { ## 効果 - (1) : 次の処理を行ったのち、例外が送出されなければ、`has_val = rhs.`[`has_value()`](has_value.md.nolink)`; return *this;` - - `this`と`rhs`が共に正常値を保持していたら、`val = *rhs` + - `this`と`rhs`が共に正常値を保持していたら、`val =` [`*rhs`](op_deref.md) - `this`が正常値を保持し、`rhs`がエラー値を保持していたら、`reinit-expected(unex, val, rhs.`[`error()`](error.md.nolink)`)` - - `this`がエラーを保持し、`rhs`が正常値を保持していたら、`reinit-expected(val, unex, *rhs)` + - `this`がエラーを保持し、`rhs`が正常値を保持していたら、`reinit-expected(val, unex,` [`*rhs`](op_deref.md)`)` - `this`と`rhs`が共にエラー値を保持していたら、`unex = rhs.`[`error()`](error.md.nolink) - (2) : 次の処理を行ったのち、例外が送出されなければ、`has_val = rhs.`[`has_value()`](has_value.md.nolink)`; return *this;` - - `this`と`rhs`が共に正常値を保持していたら、`val = std::move(*rhs)` - - `this`が正常値を保持し、`rhs`がエラー値を保持していたら、`reinit-expected(unex, val, std::move(rhs.`[`error()`](error.md.nolink)`))` - - `this`がエラーを保持し、`rhs`が正常値を保持していたら、`reinit-expected(val, unex, std::move(*rhs))` - - `this`と`rhs`が共にエラー値を保持していたら、`unex = std::move(rhs.`[`error()`](error.md.nolink)`)` + - `this`と`rhs`が共に正常値を保持していたら、`val =` [`std::move`](/reference/utility/move.md)`(`[`*rhs`](op_deref.md)`)` + - `this`が正常値を保持し、`rhs`がエラー値を保持していたら、`reinit-expected(unex, val,` [`std::move`](/reference/utility/move.md)`(rhs.`[`error()`](error.md.nolink)`))` + - `this`がエラーを保持し、`rhs`が正常値を保持していたら、`reinit-expected(val, unex,` [`std::move`](/reference/utility/move.md)`(`[`*rhs`](op_deref.md)`))` + - `this`と`rhs`が共にエラー値を保持していたら、`unex` [`std::move`](/reference/utility/move.md)`(rhs.`[`error()`](error.md.nolink)`)` - (3) : 次の処理と等価 - - `this`が正常値を保持していたら、`val = std::forward(v)` - - `this`がエラー値を保持していたら、`reinit-expected(val, unex, std::forward(v)); has_val = true;` + - `this`が正常値を保持していたら、`val =` [`std::forward`](/reference/utility/forward.md)`(v)` + - `this`がエラー値を保持していたら、`reinit-expected(val, unex,` [`std::forward`](/reference/utility/forward.md)`(v)); has_val = true;` - (4) : 次の処理と等価 - - `this`が正常値を保持していたら、`reinit-expected(unex, val, std::forward(e.`[`error()`](error.md.nolink)`)); + - `this`が正常値を保持していたら、`reinit-expected(unex, val,` [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpectederror.md.nolink)`)); has_val = false;` - - `this`がエラー値を保持していたら、`unex = std::forward(e.`[`error()`](error.md.nolink)`);` + - `this`がエラー値を保持していたら、`unex =` [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpected/error.md.nolink)`);` - (5) : 次の処理と等価 - - `this`が正常値を保持していたら、`reinit-expected(unex, val, std::forward(e.`[`error()`](error.md.nolink)`)); + - `this`が正常値を保持していたら、`reinit-expected(unex, val,` [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpectederror.md.nolink)`)); has_val = false;` - - `this`がエラー値を保持していたら、`unex = std::forward(e.`[`error()`](error.md.nolink)`);` + - `this`がエラー値を保持していたら、`unex =` [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpectederror.md.nolink)`);` ## 戻り値 @@ -224,6 +225,7 @@ int main() * value[link value.md.nolink] * error[link error.md.nolink] * std::unexpected[link ../unexpected.md] +* std::make_unique[link /reference/memory/make_unique.md] ### 出力 ``` diff --git a/reference/expected/expected/op_constructor.md b/reference/expected/expected/op_constructor.md index d5e086445b..b2994975d2 100644 --- a/reference/expected/expected/op_constructor.md +++ b/reference/expected/expected/op_constructor.md @@ -108,8 +108,8 @@ constexpr bool converts-from-any-cvref = - (4) : `rhs`が正常値を保持していれば、[`std::forward`](/reference/utility/forward.md)`(`[`*rhs`](op_deref.md)`)`で正常値を直接非リスト初期化する。そうでなければ、[`std::forward`](/reference/utility/forward.md)`(rhs.`[`error()`](error.md.nolink)`)`でエラー値を直接非リスト初期化する。 - (5) : `rhs`が正常値を保持していれば、[`std::forward`](/reference/utility/forward.md)`(`[`*rhs`](op_deref.md)`)`で正常値を直接非リスト初期化する。そうでなければ、[`std::forward`](/reference/utility/forward.md)`(rhs.`[`error()`](error.md.nolink)`)`でエラー値を直接非リスト初期化する。 - (6) : [`std::forward`](/reference/utility/forward.md)`(v)`で正常値を直接非リスト初期化する。 -- (7) : [`std::forward`](/reference/utility/forward.md)`(rhs.`[`error()`](error.md.nolink)`)`でエラー値を直接非リスト初期化する。 -- (8) : [`std::forward`](/reference/utility/forward.md)`(rhs.`[`error()`](error.md.nolink)`)`でエラー値を直接非リスト初期化する。 +- (7) : [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpected/error.md.nolink)`)`でエラー値を直接非リスト初期化する。 +- (8) : [`std::forward`](/reference/utility/forward.md)`(e.`[`error()`](../unexpected/error.md.nolink)`)`でエラー値を直接非リスト初期化する。 - (9) : [`std::forward`](/reference/utility/forward.md)`(args)...`で正常値を直接非リスト初期化する。 - (10) : `il,` [`std::forward`](/reference/utility/forward.md)`(args)...`で正常値を直接非リスト初期化する。 - (11) : [`std::forward`](/reference/utility/forward.md)`(args)...`でエラー値を直接非リスト初期化する。