User Tools

Site Tools



How begin and end are used in range-for statements.

The rules (from TC++PL4)

The expression after the colon must denote a sequence (a range); that is, it must yield a value for which we can call v.begin() and v.end() or begin(v) and end(v) to obtain iterators (§4.5):

  • the compiler first looks for members begin and end and tries to use those. If a begin or an end is found that cannot be used as a range (e.g., because a member begin is a variable rather than a function), the range-for is an error.
  • Otherwise, the compiler looks for a begin/end member pair in the enclosing scope. If none is found or if what is found cannot be used (e.g., because the begin did not take an argument of the sequence’s type), the range-for is an error.

Add more regarding standard library header <iterator>.

c_begin_end.txt · Last modified: 2018/02/05 12:15 by rpjday