
Sebastian Redl wrote:
No, a standard library that provides std::begin() and std::end() conflicts with boost::begin() and boost::end() provided by Boost.Range. These functions are used by for-range, so their existence is a requirement for a compiler supporting for-range on anything but arrays, but the language feature itself has nothing to do with the conflict.
Agreed. My description of the problem was too poor... I will start a new thread to explain what I want to do. Can you take a look at it?
Yeah, we can always use BOOST_FOREACH instead of range-based for. And considering portability, BOOST_FOREACH is a must. But IMHO it's a pity that users of the Boost libraries are recommended not to use a language feature.
Er, what? Who recommended that Boost users not use a language feature? Dave merely said that Boost authors should just use BOOST_FOREACH.
Sorry, the last sentence is unnecessary. May I withdraw it? I just wanted to say it is important to fix boost/range/begin.hpp (end.hpp) so that the following code does compile. #include <boost/range/iterator_range.hpp> int main(int argc, char* argv[]) { int ar[2] = {2, 2}; boost::iterator_range<int*> rng(ar, ar + 2); for (int i : rng) {} // error: ambiguous calls return 0; } Thanks, Michel