]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/metaparse/doc/in_range_c.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / metaparse / doc / in_range_c.qbk
CommitLineData
7c673cae
FG
1[#in_range_c]
2[section in_range_c]
3
4[h1 Synopsis]
5
6 namespace util
7 {
8 template <class T, T LowerBound, T UpperBound>
9 struct in_range_c
10 {
11 template <class U>
12 struct apply;
13 };
14 }
15
16This is a [link metafunction_class template metafunction class].
17
18[table Arguments
19 [[Name] [Type]]
20 [[`T`] [integral type]]
21 [[`LowerBound`] [value of type `T`]]
22 [[`UpperBound`] [value of type `T`]]
23 [[`U`] [[link boxed_value boxed integral value]]]
24]
25
26[h1 Description]
27
28Metafunction class verifying that `U` is in the `[LowerBound..UpperBound]` range
29or not.
30
31[h1 Header]
32
33 #include <boost/metaparse/util/in_range_c.hpp>
34
35[h1 Expression semantics]
36
37For any `T` integral type, `A`, `B` values of type `T` and `C` wrapped value the
38following are equivalent:
39
40 in_range_c<T, A, B>::apply<C>::type::value
41
42 A <= C::type::value && C::type::value <= B
43
44[h1 Example]
45
46 #include <boost/metaparse/util/in_range_c.hpp>
47
48 #include <type_traits>
49
50 using namespace boost::metaparse;
51
52 static_assert(
53 !util::in_range_c<int, 11, 13>
54 ::apply<std::integral_constant<int, 10>>::type::value,
55 "A value below the lower bound should not be in the range"
56 );
57
58 static_assert(
59 !util::in_range_c<int, 11, 13>
60 ::apply<std::integral_constant<int, 14>>::type::value,
61 "A value above the upper bound should not be in the range"
62 );
63
64 static_assert(
65 util::in_range_c<int, 11, 13>
66 ::apply<std::integral_constant<int, 11>>::type::value,
67 "The lower bound should be in the range"
68 );
69
70 static_assert(
71 util::in_range_c<int, 11, 13>
72 ::apply<std::integral_constant<int, 13>>::type::value,
73 "The upper bound should be in the range"
74 );
75
76 static_assert(
77 util::in_range_c<int, 11, 13>
78 ::apply<std::integral_constant<int, 12>>::type::value,
79 "A value between the bounds should be in the range"
80 );
81
82[endsect]
83