Linked by Eugenia Loli on Mon 1st Aug 2005 00:05 UTC
General Development Don't be jealous of programmers using new languages, such as Python or C#! C++ gives you many ways to iterate through data you've stored in containers, supports for-each, and has helpful devices called lambda functions. Jeff Cogswell shows you how you can fly through your containers with ease.
Thread beginning with comment 12119
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: BOOST_FOREACH
by falemagn on Mon 1st Aug 2005 16:31 UTC in reply to "BOOST_FOREACH"
falemagn
Member since:
2005-07-06

> and it doesn't require the compiler to support typeof
> or auto, so it works on older compilers. It even allows
> you to mutate the sequence in place:

Well, looking at the code you pasted it avoids using a the typeof or the auto keywords because it requires you to write the type of the iterator explicitely. This means that BOOST's foreach isn't polymorphic per se. You must admit my implementation is nicer ;)

Reply Parent Score: 1

RE[2]: BOOST_FOREACH
by falemagn on Mon 1st Aug 2005 16:45 in reply to "RE: BOOST_FOREACH"
falemagn Member since:
2005-07-06

Looking at the code of BOOST's foreach, I see it has a lot of code before the real for loop, which makes it impossible to use BOOST_FOREACH the same way you would use for(), forcing you to wrap it up between braces, in some circumstances.

It's also true that my implementation has the pitfall that it may evaluate the arguments more than once, though. Well, to solve these issues c++ should let the user define her own keywords... perhaps one day ;)

Reply Parent Score: 1

RE[3]: BOOST_FOREACH
by eric_niebler on Mon 1st Aug 2005 18:32 in reply to "RE[2]: BOOST_FOREACH"
eric_niebler Member since:
2005-06-29

That's not true. BOOST_FOREACH expands to a single statement, so you can use it where ever you could use a regular for loop. No extra braces required.

Reply Parent Score: 1

RE[2]: BOOST_FOREACH
by eric_niebler on Mon 1st Aug 2005 18:31 in reply to "RE: BOOST_FOREACH"
eric_niebler Member since:
2005-06-29

You are mistaken. BOOST_FOREACH does not make you write the type of the iterator. You only have to specify the element type. This is how the foreach keyword works in C#, and how it will most likely work in C++0x.

Reply Parent Score: 1