[FOLD] Review comments:
* Don't check string lengths - just try conversion.
* Sort protocols low to high
* Avoid copies
[FOLD] Optional: simplify error checking with exceptions
[FOLD] Optional: static_cast instead of explicit ctor call