I see your obscure WITH_CONST macro and counter with my obscure
UPDATE_AND_CONTINUE macro:
#define UPDATE_AND_CONTINUE(a,b) {a = b; continue;}
std::string_view input {p_first, p_beyond-p_first};
Prev_char previous_ch = '\0';
for(const char ch: input) {
if (/*...*/) {
if (/*....*/) {
// ...
UPDATE_AND_CONTINUE(previous_ch, ch);
}
}
// ...
UPDATE_AND_CONTINUE(previous_ch, ch);
}
Who says my macro is uglier than yours?