r213924 - in /branches/c++-concepts: ChangeLog....
asutton@gcc.gnu.org
asutton@gcc.gnu.org
Wed Aug 13 19:46:00 GMT 2014
Author: asutton
Date: Wed Aug 13 19:46:34 2014
New Revision: 213924
URL: https://gcc.gnu.org/viewcvs?rev=213924&root=gcc&view=rev
Log:
2014-08-13 Andrew Sutton <andrew.n.sutton@gmail.com>
Implement deduction-based explicit instantiation and specialization.
* gcc/cp/call.c (joust): Allow all non-templates to be ordered by
constraints.
* gcc/cp/pt.c (get_class_bindings): Remove superfluous parameter and
move constraint check into most_specialized_class.
(most_constrained_function): Order functions with the same signatures
by their constraints.
(determine_specialization): Candidates must satisfy constraints. Also,
order non-template candidates by constraints. Improve diagnostics
for instances where candidates are rejected.
(more_specialized_inst): New. Compare function templates.
(most_specialized_instantiation): Refactor to use
more_specialized_inst and order by constraints.
(most_specialized_class): Candidates must satisfy constraints.
* gcc/cp/decl.c (various) Cosmetic fixes.
(adjust_fn_constraints): Rewrite so that class template constraints
are not imposed on member function declarations.
* gcc/testsuite/g++.dg/concepts: New tests.
Added:
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-inst3.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-inst4.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-spec1.C
- copied, changed from r213665, branches/c++-concepts/gcc/testsuite/g++.dg/concepts/class7.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-spec2.C
- copied, changed from r213758, branches/c++-concepts/gcc/testsuite/g++.dg/concepts/class8.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-spec3.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-spec4.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-spec5.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/fn7.C
Removed:
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/class7.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/class8.C
Modified:
branches/c++-concepts/ChangeLog.concepts
branches/c++-concepts/gcc/cp/call.c
branches/c++-concepts/gcc/cp/constraint.cc
branches/c++-concepts/gcc/cp/decl.c
branches/c++-concepts/gcc/cp/pt.c
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/decl-diagnose.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-inst1.C
branches/c++-concepts/gcc/testsuite/g++.dg/concepts/explicit-inst2.C
More information about the Gcc-cvs
mailing list