| 314 | |
| 315 | template <typename Char> |
| 316 | void parse_flags(format_specs<Char>& specs, const Char*& it, const Char* end) { |
| 317 | for (; it != end; ++it) { |
| 318 | switch (*it) { |
| 319 | case '-': |
| 320 | specs.align = align::left; |
| 321 | break; |
| 322 | case '+': |
| 323 | specs.sign = sign::plus; |
| 324 | break; |
| 325 | case '0': |
| 326 | specs.fill[0] = '0'; |
| 327 | break; |
| 328 | case ' ': |
| 329 | if (specs.sign != sign::plus) specs.sign = sign::space; |
| 330 | break; |
| 331 | case '#': |
| 332 | specs.alt = true; |
| 333 | break; |
| 334 | default: |
| 335 | return; |
| 336 | } |
| 337 | } |
| 338 | } |
| 339 | |
| 340 | template <typename Char, typename GetArg> |
| 341 | auto parse_header(const Char*& it, const Char* end, format_specs<Char>& specs, |