On Fri, Jan 30, 2009 at 10:46 AM, Steven Schveighoffer <[email protected]> wrote: > "Jarrett Billingsley" wrote >> On Thu, Jan 29, 2009 at 6:15 PM, Saaa <[email protected]> wrote: >>> That gives the same error.. only casting x to real works :/ >> >> That's more an issue with D's extremely (overly?) strict overload >> resolution rules. Functions like sin() shouldn't be an issue, since >> there is only one overload with those. But yes, as far as pow() is >> concerned, I guess you do have to cast to real. Casting is fine here, >> don't bother using to!(). > > This is such a common "mistake", and really more of an annoyance, I wonder > if it might be better if pow were switched to a template that called the > actual pow after casting the first argument to real. Often times, one does > not use reals as their variable type, and I seem to recall this kind of > error happens even with literals for both arguments... > > Something like: > > real pow(T, U)(T t, U u) > { > return _pow(cast(real)t, u); > }
You may count me among the annoyed. I never use 'real' for anything, so I get those errors a lot. --bb
