Namespaces
Variants

std:: in_range

From cppreference.net
Utilities library
定義先ヘッダ <utility>
template < class R, class T >
constexpr bool in_range ( T t ) noexcept ;
(C++20以降)

R の値の範囲内に true が返されるのは、 t の値が R で表現可能な範囲内にある場合、すなわち t が値保存的に R に変換可能な場合です。

T または U のいずれかが非 整数型 、文字型、または bool である場合、コンパイル時エラーとなります。

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - HTMLタグ、属性、リンク先は一切変更していません - C++関連の専門用語(Parameters、Return value、Possible implementation、Notes、Example、See also)は原文のまま保持しています - 数値、クラス名、IDなどはすべて元のまま維持しています - フォーマットと構造は完全に保存されています

パラメータ

t - テストする値

戻り値

true t の値が R で表現可能な場合、 false がそれ以外の場合。

実装例

template<class R, class T>
constexpr bool in_range(T t) noexcept
{
    return std::cmp_greater_equal(t, std::numeric_limits<R>::min()) &&
        std::cmp_less_equal(t, std::numeric_limits<R>::max());
}

注記

この関数は enums std::byte を含む)、 char char8_t char16_t char32_t wchar_t および bool では使用できません。

機能テスト マクロ 標準 機能
__cpp_lib_integer_comparison_functions 202002L (C++20) 整数比較関数

#include <iostream>
#include <utility>
int main()
{
    std::cout << std::boolalpha;
    std::cout << std::in_range<std::size_t>(-1) << '\n';
    std::cout << std::in_range<std::size_t>(42) << '\n';
}

出力:

false
true

関連項目

与えられた値のうち小さい方を返す
(アルゴリズム関数オブジェクト)
与えられた値のうち大きい方を返す
(アルゴリズム関数オブジェクト)
値を境界値のペアの間にクランプする
(アルゴリズム関数オブジェクト)
(C++20)
線形補間関数
(関数)