https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109883
--- Comment #6 from Matt Borland <matt at mattborland dot com> --- (In reply to Xi Ruoyao from comment #4) > It seems the function > > __gnu_cxx::__promote_2<decltype (((__gnu_cxx::__promote_2<_Float64, > std::__is_integer<_Float64>::__value>::__type)(0))+((__gnu_cxx:: > __promote_2<_Float64, std::__is_integer<_Float64>::__value>::__type)(0))), > std::__is_integer<decltype (((__gnu_cxx::__promote_2<_Float64, > std::__is_integer<_Float64>::__value>::__type)(0))+((__gnu_cxx:: > __promote_2<_Float64, > std::__is_integer<_Float64>::__value>::__type)(0)))>::__value>::__type > std::pow<_Float64, _Float64>(_Float64, _Float64) > > is recursing infinitely. For Boost.Math's implementation of promote_2 we found template specializations to be effective: https://github.com/boostorg/math/pull/978/files#diff-2463d99030329b154489b8b34ce1068a34e736cab268c3421b058ca0e516680cR189.