re PR c++/57831 (pointer to member function inaccessible through using statement (or ICE))

PR c++/57831
	* pt.c (tsubst_copy): Handle USING_DECL.

From-SVN: r200839
This commit is contained in:
Jason Merrill 2013-07-09 13:55:24 -04:00 committed by Jason Merrill
parent 40e0364c55
commit 1d0859d894
3 changed files with 23 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2013-07-09 Jason Merrill <jason@redhat.com>
PR c++/57831
* pt.c (tsubst_copy): Handle USING_DECL.
2013-07-09 Marc Glisse <marc.glisse@inria.fr>
PR c++/53094

View File

@ -12552,6 +12552,9 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case TYPE_DECL:
return tsubst (t, args, complain, in_decl);
case USING_DECL:
t = DECL_NAME (t);
/* Fall through. */
case IDENTIFIER_NODE:
if (IDENTIFIER_TYPENAME_P (t))
{

View File

@ -0,0 +1,15 @@
// PR c++/57831
struct A {
void f();
};
template <class T> struct B : T {
typedef T base;
using base::f; // If I write "using B<T>::f" it's ok
void g( ) {
B<T>::f(); // This is OK as expected
(this->*&T::f)(); // This is also OK
(this->*&B<T>::f)(); // This causes error
}
};
template struct B< A >;