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