Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2003-10-10 14:18:11


David Abrahams wrote:
> Eric Niebler wrote:
>> putting the type there is more explicit, and
>>it makes it look more like a for(;;) loop. Besides, you might want a
>>conversion to occur; for example, BOOST_FOREACH( int i,
>>vector_of_bools ). Also it's impossible to achieve without typeof()
>>AFAICT.
>
>
> That all sounds unconvincing to me. I believe the conversion should
> be more explicit if you want it:
>
> FOR_EACH(b, vector_of_bools)
> {
> whatever((int)b);
> }

Yes, but "it's impossible to achieve without typeof()". I think that's
pretty convincing. ;-) Besides, if you don't declare the type, how do
you know whether the loop variable should be a reference or a value?
Defaulting to a value or const reference is limitting; defaulting to a
non-const reference is dangerous.

I have an idea for how we could disallow an implicit conversion from
happening, if people think it's the Right Thing. But personally, I don't.

>>int i;
>>BOOST_FOREACH( i, int_list )
>>{ ... }
>>
>>That way you can have access to the loop variable after the loop finishes.
>
>
> It's important to be able to do that; no doubt. It'd be nice to find
> a more-verbose syntax for that one, though ;^)

OK. I'm open to suggestions.

-- 
Eric Niebler
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk