今回は、指定した値が最小値から最大値の範囲に収まっているかどうかを判定する関数を作っていきます。
ちょっと紛らわしいのですが、ひとつめは指定した値が最大値または最小値に等しい場合も真になるvalue_in_range_inclusive関数です。
0 1 2 3 4 5 6 |
template <typename T> bool value_in_range_inclusive(const T& min, const T& value, const T& max) { return !(value < min) && !(max < value); } |
元ネタのように、前回作ったvalues_in_order関数を再利用してもいいのですが、今回の内容だけで完結するようにあえて直に判定式を書いてみました。
次は、指定した値が最大値または最大値に等しい場合は偽にするvalue_in_range_exclusive関数です。
0 1 2 3 4 5 6 |
template <typename T> bool value_in_range_exclusive(const T& min, const T& value, const T& max) { return min < value && value < max; } |
どちらの関数も、C++以降であればconstexprにしてもよいでしょう。