https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61761
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think your patch as as good as anything else we'll come up with, apart from using numeric_limits<T>::infinity() instead of INFINITY. Anybody who wants to use std::proj with types other than float, double and long double will have to ensure that std::isinf and std::copysign work. I'll add some tests and commit it shortly, thanks.