On Monday, September 26, 2011 18:33:22 Mehrdad wrote: > On 9/26/2011 2:25 PM, Jonathan M Davis wrote: > > What I probably meant to say was "Code could easily assume that..." > > but you get the idea. Certainly, there's no question that there's code > > out there that would be broken by such a change - including code in > > Phobos. So, we need to be very careful about any such changes. But > > since it would be easy to have a template constraint check > > if(isIntegral!T || is(Unqual!T == BigInt)) I don't see much benefit in > > making isIntegral return true for BigInt anyway. BigInt is _not_ the > > same as the built-in integral types. Code which uses integral types > > could easily not work with BigInt. Yes, there is plenty of code that > > could work with both, but it needs to be designed with that level of > > genericness in mind, and much of the code using isIntegral is _not_. - > > Jonathan M Davis > > IMHO that's a pretty bad constraint check. > > What it should instead be is something along the lines of: > > isIntegral!T && isPrimitive!T
Why is it bad? isIntegral was specifically designed for testing that a type was one of byte, ubyte, short, ushort, int, uint, long, and ulong, and that's exactly what it's doing. - Jonathan M Davis
