最終更新日時(UTC):
が更新

履歴 編集

customization point object
<execution>

std::execution::let_error(C++26)

namespace std::execution {
  struct let_error_t { unspecified };
  inline constexpr let_error_t let_error{};
}

概要

let_errorは、新しいSenderを返す関数呼び出し可能なオブジェクトに引き渡すことで、入力Senderエラー完了結果から入れ子の非同期操作へと変換するSenderアダプタである。

let_errorパイプ可能Senderアダプタオブジェクトであり、パイプライン記法をサポートする。

Senderアルゴリズムlet_errorの仕様は、let_valueページを参照のこと。

#include <print>
#include <execution>
namespace ex = std::execution;

int main()
{
  { // 関数呼び出し
    ex::sender auto snd0 = ex::just_error(21);
    ex::sender auto snd1 = ex::let_error(
      snd0,
      [](int n) -> ex::sender auto {
        return ex::just(n * 2);
      });
    auto [val] = std::this_thread::sync_wait(snd1).value();
    std::println("{}", val);
  }

  { // パイプライン記法
    ex::sender auto sndr = ex::just_error(21)
      | ex::let_error(
          [](int n) -> ex::sender auto {
            return ex::just(n * 2);
          });
    auto [val] = std::this_thread::sync_wait(sndr).value();
    std::println("{}", val);
  }
}

出力

42
42

バージョン

言語

  • C++26

処理系

関連項目

参照