Am 12.08.2011, 12:22 Uhr, schrieb kennytm <[email protected]>:

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? And the type of index 'i' should be
'size_t' anyway.

I think I once shot myself in the foot with this when I used 'auto' for 'i' and the code wouldn't compile on x86_64, because I assigned the variable to an int or uint later on in the loop. You just have to be aware that this is an unsigned integer of machine word length. So I agree with kennytm on this.

Just remember that reverse loops are written like this:

for (size_t i = x.length; i-- > 0; ) {...}

Reply via email to