| 148 | |
| 149 | template <typename Value, typename Pattern> |
| 150 | bool Match(Value* value, const Pattern& pattern, |
| 151 | MatchOption option = {/*.capture=*/true, /*.explain_os=*/nullptr}) { |
| 152 | if (option.capture) { |
| 153 | auto new_option = option; |
| 154 | new_option.capture = false; |
| 155 | if (!pattern.Match(value, new_option)) { |
| 156 | return false; |
| 157 | } |
| 158 | } |
| 159 | return pattern.Match(value, option); |
| 160 | } |
| 161 | |
| 162 | namespace match { |
| 163 |