0

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

4

1 に答える 1

0

この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 と互換性があります。

于 2021-01-22T01:45:12.180 に答える