This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD status.
pow() overloadsSection: 29.7 [c.math] Status: NAD Submitter: Steve Clamage Opened: 2011-08-29 Last modified: 2016-01-28
Priority: 3
View all other issues in [c.math].
View all issues with NAD status.
Discussion:
LWG issue 550(i) removed the functions:
float pow(float, int); double pow(double, int); long double pow(long double, int);
from header <cmath>. This change does not seem to be mentioned in Annex C, C.2.14.
N3290 29.7 [c.math]/p11 says:
Moreover, there shall be additional overloads sufficient to ensure:
- If any argument corresponding to a
doubleparameter has typelong double, then all arguments corresponding todoubleparameters are effectively cast tolong double.- Otherwise, if any argument corresponding to a
doubleparameter has typedoubleor an integer type, then all arguments corresponding todoubleparameters are effectively cast todouble.- Otherwise, all arguments corresponding to
doubleparameters are effectively cast tofloat.From C99 7.12.7.4 we have:
double pow(double, double);29.7 [c.math]/p11/b2 says that if the client calls
pow(2.0f, 2), then theintfor second argument causes the following effective call to be made:pow(static_cast<double>(2.0f), static_cast<double>(2)) -> doubleThe first sentence of p11 implies that this is done by supplying the following additional overload:
double pow(float, int);If the client calls
pow(2.0, 2), then the same reasoning (b2 again) implies the following additional overload:double pow(double, int);If the client calls
pow(2.0l, 2), then b1 implies the following additional overload:long double pow(long double, int);In all, p11 implies hundreds (perhaps thousands?) of extra overloads. All but one of which is a superset of the overloads required by C++98/03 (that one being
In practice, at least some vendors implement p11 by using templated overloads as opposed to ordinary overloads.pow(float, int)which had its return type changed fromfloattodouble).
Steve Clamage:
Thanks. I didn't see that those extra overloads were actually implied by p11, despite the first sentence. Without examples, the point is a bit subtle (at least for me).
[2015-05-05 Lenexa: Move to NAD]
Billy: I believe this is NAD.
STL: Oh, Steve himself agrees.
Wakely: The issue marked as NAD will be sufficient.
STL: Yes, we should get rid of this.
Billy: I don't see any minutes from Issaquah.
Marshall: Since Steve agrees, does anyone object to marking as NAD?
Nope.
Proposed resolution: