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:
parent
40e0364c55
commit
1d0859d894
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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 >;
|
Loading…
Reference in New Issue