| 1127 | template <std::size_t patternStartIdx, std::size_t... I, typename RangeBegin, |
| 1128 | typename PatternTuple, typename ContextT> |
| 1129 | constexpr decltype(auto) matchPatternRangeImpl(RangeBegin &&rangeBegin, |
| 1130 | PatternTuple &&patternTuple, |
| 1131 | int32_t depth, ContextT &context, |
| 1132 | std::index_sequence<I...>) |
| 1133 | { |
| 1134 | auto const func = [&](auto &&value, auto &&pattern) |
| 1135 | { |
| 1136 | return matchPattern(std::forward<decltype(value)>(value), pattern, |
| 1137 | depth + 1, context); |
| 1138 | }; |
| 1139 | static_cast<void>(func); |
| 1140 | // Fix Me, avoid call next from begin every time. |
| 1141 | return (func(*std::next(rangeBegin, static_cast<long>(I)), |
| 1142 | std::get<I + patternStartIdx>(patternTuple)) && |
| 1143 | ...); |
| 1144 | } |
| 1145 | |
| 1146 | template <std::size_t patternStartIdx, std::size_t size, |
| 1147 | typename ValueRangeBegin, typename PatternTuple, typename ContextT> |
nothing calls this directly
no test coverage detected