This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
pow(complex<float>, int)
Section: 29.4.10 [cmplx.over] Status: New Submitter: Tim Song Opened: 2025-01-10 Last modified: 2025-01-18
Priority: Not Prioritized
View other active issues in [cmplx.over].
View all other issues in [cmplx.over].
View all issues with New status.
Discussion:
Before C++20, 29.4.10 [cmplx.over] says that this produces a complex<double>
.
This was confirmed by LWG 844(i) and consistent with C99.
complex<common_type_t<float, int>>
,
which is complex<float>
. This is a breaking change that does not appear to have been
intentional.
Proposed resolution:
This wording is relative to N5001.
Modify 29.4.10 [cmplx.over] as indicated:
-3- Function template
pow
has additional constexpr overloads sufficient to ensure, for a call with one argument of typecomplex<T1>
and the other argument of typeT2
orcomplex<T2>
, both arguments are effectively cast tocomplex<common_type_t<T1, T3
, whereT2>>T3
isdouble
ifT2
is an integer type andT2
otherwise. Ifcommon_type_t<T1, T3
is not well-formed, then the program is ill-formed.T2>