vec: Simplify use with C++11 range-based 'for'.
authorJason Merrill <jason@redhat.com>
Wed, 2 Dec 2020 22:11:33 +0000 (17:11 -0500)
committerJason Merrill <jason@redhat.com>
Fri, 4 Dec 2020 19:45:25 +0000 (14:45 -0500)
commitdf933e307b1950ce12472660dcac1765b8eb431d
tree6eeefb7f2051c8c3525431d0e35f8b5668922172
parentb96802994acb47d5a86d9112d7b1eeda9418827f
vec: Simplify use with C++11 range-based 'for'.

It looks cleaner if we can use a vec* directly as a range for the C++11
range-based 'for' loop, without needing to indirect from it, and also works
with null pointers.

The change in cp_parser_late_parsing_default_args is an example of how this
can be used to simplify a simple loop over a vector.  Reverse or subset
iteration will require adding range adaptors.

I deliberately didn't format the new overloads for etags since they are
trivial.

gcc/ChangeLog:

* vec.h (begin, end): Add overloads for vec*.
* tree.c (build_constructor_from_vec): Remove *.

gcc/cp/ChangeLog:

* decl2.c (clear_consteval_vfns): Remove *.
* pt.c (do_auto_deduction): Remove *.
* parser.c (cp_parser_late_parsing_default_args): Change loop
to use range 'for'.
gcc/cp/decl2.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/tree.c
gcc/vec.h