I´m just reading URI paper when I saw the ranged parts
| URI part | Range | String |
|---|
| scheme | [a, b) | "http" |
| user_info | | nullopt |
| host | [c, d) | "www.example.com" |
| port | | nullopt |
| path | [d, e) | "/path/" |
| query | [f, g) | "key=value" |
| fragment | [h, i) | "fragment" |
I think that is possible to skip the need to use nullopt, if we use an empty string_view, pointing URI part begin() and end() to same address, for example, "user info" be pointed to [b,b).