Implements reduction of requirements into the constraints language: logical formulas comprised of atomic propositions. Calls to constraint predicates are recursively inlined in the resulting expression. All other calls are treated as atoms.
2013-03-01 Andrew Sutton <andrew.n.sut...@gmail.com> * gcc/cp/Makefile.lang.in: Add constraints.o target. * gcc/cp/cp-tree.h (substitute_template_parameters): Declare. (instantiate_requirements): Declare. (conjoin_requirements): Declare. (disjoin_requirements): Declare. (reduce_requirements): Declare. * gcc/cp/pt.c (substitute_template_parameters): Define. (instantiate_requirements): Define. * gcc/cp/pt.c (finish_template_requirements): Call reduce_requirements to get constraints. * gcc/cp/parser.c (cp_parser_type_parameter): Restore saved constraints after parsing template template parameter decl. * gcc/cp/constraints.cc: New. Andrew
reduce-req.patch
Description: Binary data