> foo.c:6:23: error: call of overloaded 'exp(__fp16&)' is ambiguous __fp16 isn't ambiguous, calling std::exp with an argument of that type is ambiguous, because the standard library doesn't provide an overload for that type.
It could be added (probably defined to cast to float and use the overload for float), but we would need to do it for every function in <math.h>. It's a simple matter of programming, but somebody needs to do the work.