Commit 18f5be99 by Mark Mitchell Committed by Mark Mitchell

re PR c++/13925 (Bug while befriending specializations)

	PR c++/13925
	* decl.c (start_function): Do not call pushdecl for any
	instantiation or specialization of a primary template.

	PR c++/13925
	* g++.dg/template/lookup5.C: New test.

From-SVN: r77187
parent 4bfb8bba
2004-02-03 Mark Mitchell <mark@codesourcery.com>
PR c++/13925
* decl.c (start_function): Do not call pushdecl for any
instantiation or specialization of a primary template.
2004-02-03 Mark Mitchell <mark@codesourcery.com>
PR c++/13950
* parser.c (cp_parser_class_name): Robustify.
......
......@@ -10272,8 +10272,9 @@ start_function (tree declspecs, tree declarator, tree attrs, int flags)
if (!processing_template_decl && !(flags & SF_PRE_PARSED))
{
/* A specialization is not used to guide overload resolution. */
if (!DECL_TEMPLATE_SPECIALIZATION (decl1)
&& ! DECL_FUNCTION_MEMBER_P (decl1))
if (!DECL_FUNCTION_MEMBER_P (decl1)
&& !(DECL_USE_TEMPLATE (decl1) &&
PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl1))))
{
tree olddecl = pushdecl (decl1);
......
2004-02-03 Mark Mitchell <mark@codesourcery.com>
PR c++/13925
* g++.dg/template/lookup5.C: New test.
2004-02-03 Mark Mitchell <mark@codesourcery.com>
PR c++/13950
* g++.dg/template/lookup4.C: New test.
......
// PR c++/13925
namespace N {
template <class T> void f(T);
namespace M {
class A {
friend void f<int>(int);
};
}
template <class T> void f(T) {}
template <> void f<int>(int )
{
f<long>(0);
}
}
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