This is technically undefined behavior when T==float and args[0] is a double that's outside the range of float.