The following changes are made based on the feedback from Tim King:
- Removed default template parameters, to have less assumptions.
- Implemented ConsumeBytesWithTerminator method.
- Made PickValueInArray method work with initializer_list argument.
- Got rid of data_type type alias, that was redundant.
- Refactored ConsumeBytes logic into a private method for better code reuse.
- Replaced implementation defined unsigned to signed conversion.
- Fixed ConsumeRandomLengthString to always call shrink_to_fit.
- Clarified and fixed some commments.
- Applied clang-format to both the library and the unittest source.
Tested on Linux, Mac, Windows.