最終更新日時: 2026年05月17日 00時17分02秒 (JST)
yoh が更新

履歴 編集

customization point object
<execution>

# std::execution::upon_error(C++26)

    namespace std::execution {
      struct upon_error_t { unspecified };
      inline constexpr upon_error_t upon_error{};
    }

## 概要

`upon_error`は、入力Senderのエラー完了操作の継続として関数呼び出しをアタッチし、戻り値データを正常完了として送信するSenderアダプタである。

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

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

## 例

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

    int main()
    {
      { // 関数呼び出し
        ex::sender auto snd0 = ex::just_error(42);
        ex::sender auto snd1 = ex::upon_error(snd0, [](int err) {
          return err;
        });
        auto [v] = std::this_thread::sync_wait(snd1).value();
        std::println("{}", v);
      }

      { // パイプライン記法
        ex::sender auto sndr = ex::just_error(42)
          | ex::upon_error([](int err) {
              return err;
            });
        auto [v] = std::this_thread::sync_wait(sndr).value();
        std::println("{}", v);
      }
    }

### 出力

    42
    42

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `execution::then`
- `execution::upon_stopped`

## 参照

- P2300R10 `std::execution`