* parser.c (cp_parser_class_head): If we're in the middle of an
expression, use ts_within_enclosing_non_class.
From-SVN: r245587
2017-02-19 Jason Merrill <jason@redhat.com>
+ PR c++/79580 - ICE with compound literal
+ * parser.c (cp_parser_class_head): If we're in the middle of an
+ expression, use ts_within_enclosing_non_class.
+
PR c++/79503 - inherited ctor taking base class
* call.c (add_function_candidate): Also check that
DECL_INHERITED_CTOR_BASE is reference-related to the parameter type.
/* If the class was unnamed, create a dummy name. */
if (!id)
id = make_anon_name ();
- type = xref_tag (class_key, id, /*tag_scope=*/ts_current,
+ tag_scope tag_scope = (parser->in_type_id_in_expr_p
+ ? ts_within_enclosing_non_class
+ : ts_current);
+ type = xref_tag (class_key, id, tag_scope,
parser->num_template_parameter_lists);
}
--- /dev/null
+// PR c++/79580
+// { dg-options "-flto -std=c++98" }
+
+class a
+{
+ static const double b;
+};
+const double a::b ((union { double c; }){}.c);