2014-08-13 Braden Obrzut <admin@maniacsvault.net>
commit6627aa770ed2ec7f55143563e3b9568a2d2ba946
authorasutton <asutton@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Aug 2014 12:25:29 +0000 (13 12:25 +0000)
committerasutton <asutton@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 13 Aug 2014 12:25:29 +0000 (13 12:25 +0000)
tree08684c0c3d9470be45beb20eab927aa92c294250
parent68522aeb6143b9a8e203410deb1a0e0ed2b75972
2014-08-13  Braden Obrzut <admin@maniacsvault.net>

* gcc/cp/constraint.cc (deduce_constrained_parameter): Deduce concept
from variable concept template-id expressions.
(normalize_var): New.
(normalize_template_id): Identify variable concepts.
(build_concept_check): Handle variable concepts.
(finish_shorthand_requirement): Handle variable concepts.
(diagnose_var): New.
(diagnose_node): Identify variable concepts.
* gcc/cp/decl.c (grokvardecl): Pass concept flag through to
check_explicit_specialization.
(grokdeclarator): Allow variable concepts and pass concept flag through
grokvardecl.
* gcc/cp/parser.c (cp_is_constrained_parameter): Accept variable
concepts.
(cp_parser_nonclass_name): Accept variable concepts.
(get_concept_from_constraint): Handle variable concepts.
* gcc/cp/pt.c (tsubst_copy_and_build): Lookup variable templates.
(value_dependent_expression_p): Check requires expressions for value
dependence.
* gcc/cp/semantics.c (finish_call_expr): Don't instantiate variable
templates if processing a template declaration.
* gcc/testsuite/g++.dg/concepts/decl-diagnose.C: Change expected error
as variable concepts are now handled.
* gcc/testsuite/g++.dg/concepts/var-concepts1.C: New test.
* gcc/testsuite/g++.dg/concepts/var-concepts2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/c++-concepts@213909 138bc75d-0d04-0410-961f-82ee72b054a4
ChangeLog.concepts
gcc/cp/constraint.cc
gcc/cp/decl.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/testsuite/g++.dg/concepts/var-concepts1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/concepts/var-concepts2.C [new file with mode: 0644]