c++: Add make_temp_override generator functions
authorJason Merrill <jason@redhat.com>
Wed, 2 Sep 2020 20:47:37 +0000 (16:47 -0400)
committerJason Merrill <jason@redhat.com>
Thu, 10 Dec 2020 20:36:15 +0000 (15:36 -0500)
commit3cf63c94df4712569e0ab996155013a3a043bed3
treeace8cabaa9a8553b576a222edb7e245246d67623
parent445430e16bd08ade34637d2346ded40dd49de508
c++: Add make_temp_override generator functions

A common pattern before C++17 is the generator function, used to avoid
having to specify the type of a container element by using a function call
to get type deduction; for example, std::make_pair.  C++17 added class type
argument deduction, making generator functions unnecessary for many uses,
but GCC won't be written in C++17 for years yet.

gcc/cp/ChangeLog:

* cp-tree.h (struct type_identity): New.
(make_temp_override): New.
* decl.c (grokdeclarator): Use it.
* except.c (maybe_noexcept_warning): Use it.
* parser.c (cp_parser_enum_specifier): Use it.
(cp_parser_parameter_declaration_clause): Use it.
(cp_parser_gnu_attributes_opt): Use it.
(cp_parser_std_attribute): Use it.
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/except.c
gcc/cp/parser.c