Commit 023458fa by Kriang Lerdsuwanakij Committed by Kriang Lerdsuwanakij

re PR c++/17154 (Using declaration of function name ignored inside partial…

re PR c++/17154 (Using declaration of function name ignored inside partial specialization of template class)

	PR c++/17154
	* search.c (lookup_field_1): Handle using declaration in
	class template partial specialization.

	* g++.dg/template/using9.C: New test.

From-SVN: r92994
parent 23ff7e2d
2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/17154
* search.c (lookup_field_1): Handle using declaration in
class template partial specialization.
2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/19258 PR c++/19258
* pt.c (push_access_scope): Handle friend defined in class. * pt.c (push_access_scope): Handle friend defined in class.
(pop_access_scope): Likewise. (pop_access_scope): Likewise.
......
/* Breadth-first and depth-first routines for /* Breadth-first and depth-first routines for
searching multiple-inheritance lattice for GNU C++. searching multiple-inheritance lattice for GNU C++.
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc. 1999, 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC. This file is part of GCC.
...@@ -470,13 +470,10 @@ lookup_field_1 (tree type, tree name, bool want_type) ...@@ -470,13 +470,10 @@ lookup_field_1 (tree type, tree name, bool want_type)
the compiler cannot handle that. Once the class is the compiler cannot handle that. Once the class is
defined, USING_DECLs are purged from TYPE_FIELDS; see defined, USING_DECLs are purged from TYPE_FIELDS; see
handle_using_decl. However, we make special efforts to handle_using_decl. However, we make special efforts to
make using-declarations in template classes work make using-declarations in class templates and class
correctly. */ template partial specializations work correctly noticing
if (CLASSTYPE_TEMPLATE_INFO (type) that dependent USING_DECL's do not have TREE_TYPE set. */
&& !CLASSTYPE_USE_TEMPLATE (type) if (TREE_TYPE (field))
&& !TREE_TYPE (field))
;
else
continue; continue;
} }
......
2004-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/17154
* g++.dg/template/using9.C: New test.
2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/19258 PR c++/19258
......
// { dg-do compile }
// Origin: stefaandr@hotmail.com
// PR c++/17154: Using declaration in partial class template specialization.
template <int numrows, class T> struct A { void test_A() {}; };
template <int numrows, class T> struct B {};
template <class T> struct B <3, T> : public A <3, T> {
using A <3, T>::test_A;
void test_B_spec() { test_A(); };
};
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