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>
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
* pt.c (push_access_scope): Handle friend defined in class.
(pop_access_scope): Likewise.
......
/* Breadth-first and depth-first routines for
searching multiple-inheritance lattice for GNU C++.
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)
This file is part of GCC.
......@@ -470,13 +470,10 @@ lookup_field_1 (tree type, tree name, bool want_type)
the compiler cannot handle that. Once the class is
defined, USING_DECLs are purged from TYPE_FIELDS; see
handle_using_decl. However, we make special efforts to
make using-declarations in template classes work
correctly. */
if (CLASSTYPE_TEMPLATE_INFO (type)
&& !CLASSTYPE_USE_TEMPLATE (type)
&& !TREE_TYPE (field))
;
else
make using-declarations in class templates and class
template partial specializations work correctly noticing
that dependent USING_DECL's do not have TREE_TYPE set. */
if (TREE_TYPE (field))
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>
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