Hi there,
I have a problem regarding parse for boolean type.
Indeed it is identified as UINT8 instead of BOOLEAN (or BOOL), thus throw_if_invalid raises an exception:

I guess it happens because in c++ boolean is an unsigned char instead of int (it is also true for bool). I think could be nice a specialized template for the boolean type, in order to avoid this problem.