理解fmt formatter解析函数

Understand fmt formatter parse function

我正在尝试在解析函数下为 fmt 中的自定义类型创建格式化程序。在他们的文档 (https://fmt.dev/dev/api.html) 中,这一行有某种我以前从未见过的循环结构:

auto it = ctx.begin(), end = ctx.end();
if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;

这显然是一个使用迭代器的循环,大概是C++17的新东西。它是什么?完整示例在这里:https://godbolt.org/z/fEGvaj

formatter::parse 函数采用解析上下文 ctx 并检查范围 [ctx.begin(), ctx.end()) 是否包含格式说明符 fe(在此示例中)。

if (it != end && (*it == 'f' || *it == 'e')) presentation = *it++;
    ^                 ^             ^
 check if the         check if the first
 range is empty       character is 'f' or 'e'

这里没有什么特别新颖的,这段代码是兼容C++98的。