最終更新日時: 2026年05月15日 13時58分51秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<numeric>

# std::saturating_cast(C++26)

    namespace std {
      template<class R, class T>
        constexpr R saturating_cast(T x) noexcept;
    }

## 概要

値`x`を変換先の型`R`で表現可能な値へ丸める。

## テンプレートパラメータ制約

`T`は符号付き整数型または符号無し整数型であること。

## 戻り値

- 値`x`が型`T`で表現可能ならば、`x`を返す
- そうでないとき、型`T`で表現可能な最大値または最小値のうち`x`に近い方の値を返す

## 例外

投げない

## 例

    #include <cstdint>
    #include <numeric>
    #include <print>

    int main()
    {
      std::println("{}", std::saturating_cast<std::int8_t>( 100));
      std::println("{}", std::saturating_cast<std::int8_t>( 200));
      std::println("{}", std::saturating_cast<std::int8_t>(-200));
    }

### 出力

    100
    127
    -128

## バージョン

### 言語

- C++26

### 処理系

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

## 参照

- P0543R3 Saturation arithmetic
- P4052R0 Renaming saturation arithmetic functions