On Friday, August 12, 2011 12:39:01 Don wrote: > kennytm wrote: > > Don <[email protected]> wrote: > >> I've had a look at a dozen or so of these, and they were all real. I > >> didn't see any which require a cast to "make the compiler shut up". > >> That's pretty impressive. In C++ I find that such messages are nearly > >> always false positives. > >> > >> The one case where it's a bit annoying is this: > >> > >> int [] x = new int[6]; // or x = some array literal. > >> for (int i = 0; i < x.length; ++i) {...} > >> > >> Here is a suggestion for how we could eliminate such false positives. > >> http://d.puremagic.com/issues/show_bug.cgi?id=6478 > > > > Doesn't this require flow analysis? > > Yes. See the bug report. > > > And the type of index 'i' should be 'size_t' anyway. > > Why? It will only ever be in the range 0..6.
Sure. it works in this case, but in the general case it's good practice to use size_t for indices, because that's the actual type of the index, so it won't have signedness or range problems. Unfortunately, it's a practice that many people don't seem to follow (in both C/C++ and D), since it's so natural to use int (or auto in D), but I'd definitely argue that programmers should normally be using size_t for indices. - Jonathan M Davis
