1[#digit_to_int] 2[section digit_to_int] 3 4[h1 Synopsis] 5 6 namespace util 7 { 8 template <class D> 9 struct digit_to_int; 10 } 11 12This is a [link lazy_metafunction lazy template metafunction] that supports 13[link currying currying]. 14 15[table Arguments 16 [[Name] [Type]] 17 [[`D`] [[link boxed_value boxed] character value]] 18] 19 20[h1 Description] 21 22Converts a boxed character containing a value in the range `['0'..'9']` to an 23integer. 24 25[h1 Return value] 26 27It returns a [link boxed_value boxed] integer value. 28 29[h1 Header] 30 31 #include <boost/metaparse/util/digit_to_int.hpp> 32 33[h1 Expression semantics] 34 35For any `C` boxed character value in the range `['0'..'9']` the following 36expressions are equivalent 37 38 digit_to_int<>::apply<C>::type 39 digit_to_int<C>::type 40 digit_to_int_c<C::type::value>::type 41 42[h1 Example] 43 44 #include <boost/metaparse/util/digit_to_int.hpp> 45 46 #include <type_traits> 47 48 using namespace boost::metaparse; 49 50 struct nullary_metafunction_returning_4 51 { 52 using type = std::integral_constant<char, '4'>; 53 }; 54 55 static_assert( 56 util::digit_to_int<std::integral_constant<char, '0'>>::type::value == 0, 57 "it should convert a character to the corresponding integer value" 58 ); 59 60 static_assert( 61 util::digit_to_int<>::type 62 ::apply<std::integral_constant<char, '7'>>::type::value == 7, 63 "it should support currying" 64 ); 65 66 static_assert( 67 util::digit_to_int<nullary_metafunction_returning_4>::type::value == 4, 68 "it should support lazy evaluation" 69 ); 70 71[endsect] 72 73