
maybe a related question - how to you handle overflows - for example reading a too large value into a float? That's not supported, you'll need to provide a double or a 64 bit int. What do you mean by "not supported"? What happens when you read a value larger than INT_MAX to an int? Or a value exceeding FLOAT_MAX but still using a float? Will those be silently truncated, UB in case of int, wrapped to inf for float? Haven't checked yet, but I guess reading an int value to a string will cause an error/exception to be generated by the library, doesn't it? I'd argue the same should be done if the value doesn't fit in the numeric target type is there a way to define how safe the conversion should be (plain cast, check for overflow and throw exception)?
It's a minimal set of types at the moment and these are all safe. A user can add his own conversions and will then be responsible to assure it's safe. See above: In which way are they "safe"? Is this in the documentation?