123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- [#in_range]
- [section in_range]
- [h1 Synopsis]
- namespace util
- {
- template <class LowerBound, class UpperBound, class Item>
- struct in_range;
- }
- This is a [link metafunction template metafunction] supporting
- [link currying currying].
- [table Arguments
- [[Name] [Type]]
- [[`LowerBound`] [[link boxed_value boxed integral value]]]
- [[`UpperBound`] [[link boxed_value boxed integral value]]]
- [[`Item`] [[link boxed_value boxed integral value]]]
- ]
- [h1 Description]
- It returns a boxed boolean value. The value is `true` when `Item` is in the
- range `[LowerBound..UpperBound]` and `false` otherwise. `boost::mpl::less_equal`
- is used for comparison.
- [h1 Header]
- #include <boost/metaparse/util/in_range.hpp>
- [h1 Expression semantics]
- For any `L`, `U` and `T` classes the following are equivalent:
- in_range<L, U>::apply<T>::type::value
-
- boost::mpl::less_equal<L, T>::type::value
- && boost::mpl::less_equal<T, U>::type::value
- [h1 Example]
- #include <boost/metaparse/util/in_range.hpp>
-
- #include <boost/mpl/int.hpp>
-
- using namespace boost::metaparse;
-
- static_assert(
- !util::in_range<
- boost::mpl::int_<11>,
- boost::mpl::int_<13>,
- boost::mpl::int_<10>
- >::type::value,
- "A value below the lower bound should not be in the range"
- );
-
- static_assert(
- !util::in_range<
- boost::mpl::int_<11>,
- boost::mpl::int_<13>,
- boost::mpl::int_<14>
- >::type::value,
- "A value above the upper bound should not be in the range"
- );
-
- static_assert(
- util::in_range<
- boost::mpl::int_<11>,
- boost::mpl::int_<13>,
- boost::mpl::int_<11>
- >::type::value,
- "The lower bound should be in the range"
- );
-
- static_assert(
- util::in_range<
- boost::mpl::int_<11>,
- boost::mpl::int_<13>,
- boost::mpl::int_<13>
- >::type::value,
- "The upper bound should be in the range"
- );
-
- static_assert(
- util::in_range<
- boost::mpl::int_<11>,
- boost::mpl::int_<13>,
- boost::mpl::int_<12>
- >::type::value,
- "A value between the bounds should be in the range"
- );
-
- static_assert(
- util::in_range<>
- ::apply<boost::mpl::int_<11>>::type
- ::apply<boost::mpl::int_<13>>::type
- ::apply<boost::mpl::int_<12>>::type
- ::type::value,
- "It should support currying"
- );
- [endsect]
|