• mmitchel's avatar
    * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro. · 0f0d5a69
    mmitchel authored
    	(DECL_CLASS_TEMPLATE_P): Likewise.
    	(DECL_PRIMARY_TEMPLATE): Likewise.
    	(PRIMARY_TEMPLATE_P): Use it.
    	(push_template_decl_real): New function.
    	(redeclare_class_template): Take new template parameters as
    	input.
    	(is_specialization_of): New function.
    	(comp_template_args): Declare.
    	* decl.c (pushtag): Handle friend template classes.
    	(xref_tag): Likewise.  Use new calling convention for
    	redeclare_class_template.
    	* decl2.c (grok_x_components): Handle friend templates.
    	* friend.c (is_friend): Use is_specialization_of where
    	appropriate.  Deal with friend class templates.
    	(make_friend_class): Let a class template be friends with itself.
    	* pt.c (comp_template_args): Remove declaration.
    	(tsubst_friend_class): New function.
    	(push_template_decl_real): New function.
    	(push_template_decl): Use it.
    	(redeclare_class_template): Adjust for new calling convention.
    	(comp_template_args): Give it external linkage.
    	(instantiate_class_type): Use tsubst_friend_class to deal
    	with friend templates.
    	* typeck.c (comptypes): Use comp_template_args, rather than
    	expanding it inline.
    	* parse.y (component_decl): Handle a nested template type
    	like other component type declarations.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19418 138bc75d-0d04-0410-961f-82ee72b054a4
    0f0d5a69
pt.c 188 KB