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
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.
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.
--- /dev/null
+// 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);
+ }
+}