1[#in_range] 2[section in_range] 3 4[h1 Synopsis] 5 6 namespace util 7 { 8 template <class LowerBound, class UpperBound, class Item> 9 struct in_range; 10 } 11 12This is a [link metafunction template metafunction] supporting 13[link currying currying]. 14 15[table Arguments 16 [[Name] [Type]] 17 [[`LowerBound`] [[link boxed_value boxed integral value]]] 18 [[`UpperBound`] [[link boxed_value boxed integral value]]] 19 [[`Item`] [[link boxed_value boxed integral value]]] 20] 21 22[h1 Description] 23 24It returns a boxed boolean value. The value is `true` when `Item` is in the 25range `[LowerBound..UpperBound]` and `false` otherwise. `boost::mpl::less_equal` 26is used for comparison. 27 28[h1 Header] 29 30 #include <boost/metaparse/util/in_range.hpp> 31 32[h1 Expression semantics] 33 34For any `L`, `U` and `T` classes the following are equivalent: 35 36 in_range<L, U>::apply<T>::type::value 37 38 boost::mpl::less_equal<L, T>::type::value 39 && boost::mpl::less_equal<T, U>::type::value 40 41[h1 Example] 42 43 #include <boost/metaparse/util/in_range.hpp> 44 45 #include <boost/mpl/int.hpp> 46 47 using namespace boost::metaparse; 48 49 static_assert( 50 !util::in_range< 51 boost::mpl::int_<11>, 52 boost::mpl::int_<13>, 53 boost::mpl::int_<10> 54 >::type::value, 55 "A value below the lower bound should not be in the range" 56 ); 57 58 static_assert( 59 !util::in_range< 60 boost::mpl::int_<11>, 61 boost::mpl::int_<13>, 62 boost::mpl::int_<14> 63 >::type::value, 64 "A value above the upper bound should not be in the range" 65 ); 66 67 static_assert( 68 util::in_range< 69 boost::mpl::int_<11>, 70 boost::mpl::int_<13>, 71 boost::mpl::int_<11> 72 >::type::value, 73 "The lower bound should be in the range" 74 ); 75 76 static_assert( 77 util::in_range< 78 boost::mpl::int_<11>, 79 boost::mpl::int_<13>, 80 boost::mpl::int_<13> 81 >::type::value, 82 "The upper bound should be in the range" 83 ); 84 85 static_assert( 86 util::in_range< 87 boost::mpl::int_<11>, 88 boost::mpl::int_<13>, 89 boost::mpl::int_<12> 90 >::type::value, 91 "A value between the bounds should be in the range" 92 ); 93 94 static_assert( 95 util::in_range<> 96 ::apply<boost::mpl::int_<11>>::type 97 ::apply<boost::mpl::int_<13>>::type 98 ::apply<boost::mpl::int_<12>>::type 99 ::type::value, 100 "It should support currying" 101 ); 102 103[endsect] 104 105