This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++0x] Range-based for statements and ADL


On Fri, Mar 25, 2011 at 11:52 AM, James Dennett <james.dennett@gmail.com> wrote:
> I'd be interested to know those reasons.
Well, maybe not *plenty*, but *some*... Let's say that I have a function:
template <typename S, typename T> void Dump(S &s, const T &t)
{
    for (auto i : t)
        s.dump(i);
}
Cool!

Now I want to do the following:
template <typename S, typename T> void DumpExtra(S &s, const T &t)
{
   auto _b = begin(c);
   auto _e = end(c);
   for (auto _it = _b; _it != _e; ++_it)
   {
       auto i = *_it;
       if (s.condition(i))
           s.dump(i);
       else
       {
          if (++_it == _e)
              break;
          s.dump2(i, *_it);
       }
}
I cannot use the range-for because I increment the iterator. But now
I'm not sure if this may not compile, or worse, may use a different
range definition than the other one!

Disclaimer: the fact that I lack the imagination for a better example
doesn't mean that it will not happen in the real world.
--
Rodrigo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]