Commit 84e6233f by Jason Merrill Committed by Jason Merrill

decl.c (start_decl): An explicit specialization of a static data member is only a definition if...

	* decl.c (start_decl): An explicit specialization of a static data
	member is only a definition if it has an initializer.

From-SVN: r23847
parent f3cd6f7e
1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
* decl.c (start_decl): An explicit specialization of a static data
member is only a definition if it has an initializer.
* except.c (expand_throw): Use cp_finish_decl for the throw temp.
* cvt.c (build_up_reference): Pass DIRECT_BIND down into
cp_finish_decl.
......
......@@ -6770,7 +6770,17 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
DECL_IN_AGGR_P (decl) = 0;
if ((DECL_LANG_SPECIFIC (decl) && DECL_USE_TEMPLATE (decl))
|| CLASSTYPE_USE_TEMPLATE (context))
SET_DECL_TEMPLATE_SPECIALIZATION (decl);
{
SET_DECL_TEMPLATE_SPECIALIZATION (decl);
/* [temp.expl.spec] An explicit specialization of a static data
member of a template is a definition if the declaration
includes an initializer; otherwise, it is a declaration.
We check for processing_specialization so this only applies
to the new specialization syntax. */
if (DECL_INITIAL (decl) == NULL_TREE && processing_specialization)
DECL_EXTERNAL (decl) = 1;
}
if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl))
cp_pedwarn ("declaration of `%#D' outside of class is not definition",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment