| 1973 | |
| 1974 | template<bool Equal, typename Context> |
| 1975 | auto no_case_aware_compare(Context const & context) |
| 1976 | { |
| 1977 | return [no_case = context.no_case_depth_](char32_t a, char32_t b) { |
| 1978 | if (no_case) { |
| 1979 | case_fold_array_t folded_a = {0, 0, 0}; |
| 1980 | detail::case_fold(a, folded_a.begin()); |
| 1981 | case_fold_array_t folded_b = {0, 0, 0}; |
| 1982 | detail::case_fold(b, folded_b.begin()); |
| 1983 | return Equal ? folded_a == folded_b : folded_a < folded_b; |
| 1984 | } else { |
| 1985 | return Equal ? a == b : a < b; |
| 1986 | } |
| 1987 | }; |
| 1988 | } |
| 1989 | |
| 1990 | template<typename T, typename U> |
| 1991 | constexpr bool both_character_types = |