The original patch for concept introductions was not popping a
deferred access check. This fixes that problem, although I'm not sure
if we need to defer access checks at all.

2014-10-13  Andrew Sutton  <andrew.n.sut...@gmail.com>

        Fix regression related to concept introductions.
        * gcc/cp/constraint.cc (cp_parser_template_declaration_after_exp):
        Pop deferred access checks afer parsing the introduction.


Andrew Sutton
Index: parser.c
===================================================================
--- parser.c	(revision 214991)
+++ parser.c	(working copy)
@@ -24409,19 +24409,21 @@ cp_parser_template_declaration_after_exp
 	    = current_template_reqs;
 	}
     }
-  else if(flag_concepts)
+  else if (flag_concepts)
     {
       need_lang_pop = false;
       checks = NULL;
       saved_template_reqs = release (current_template_reqs);
-      push_deferring_access_checks (dk_deferred);
 
       // Scope may be changed by a nested-name-specifier.
       tree saved_scope = parser->scope;
       tree saved_qualifying_scope = parser->qualifying_scope;
       tree saved_object_scope = parser->object_scope;
 
+      push_deferring_access_checks (dk_deferred);
       parameter_list = cp_parser_template_introduction (parser);
+      pop_deferring_access_checks ();
+    
       if (parameter_list == error_mark_node)
         {
 	  // Restore template requirements before returning.

Reply via email to