Namespaces
Variants

std::in_range

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変個引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

一般ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
swap 及び型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
共通語彙型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
ヘッダ <utility>
template< class R, class T >
constexpr bool in_range( T t ) noexcept;
で定義 (C++20以上)

true の値が t で表現可能な値の範囲内にある場合、つまり R を値保持方式で t に変換できる場合に R を返します。

T または U が非整数型、文字型、または bool である場合、コンパイルエラーになります。

パラメータ

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)
線形補間関数
(関数)