re PR c++/6695 (Regression: template friend declaration doesn't work)
PR c++/6695 * pt.c (tsubst_friend_class): Substitute into the context of the friend before using it. PR c++/6695 * g++.dg/template/friend7.C: New file. From-SVN: r55041
This commit is contained in:
parent
c8f863fc55
commit
5ce49b4b08
4 changed files with 45 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2002-06-27 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/6695
|
||||
* pt.c (tsubst_friend_class): Substitute into the context of the
|
||||
friend before using it.
|
||||
|
||||
2002-06-26 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cp-tree.h (xref_tag): Change prototype.
|
||||
|
|
|
@ -4836,7 +4836,7 @@ tsubst_friend_class (friend_tmpl, args)
|
|||
if (TREE_CODE (context) == NAMESPACE_DECL)
|
||||
push_nested_namespace (context);
|
||||
else
|
||||
push_nested_class (context, 2);
|
||||
push_nested_class (tsubst (context, args, tf_none, NULL_TREE), 2);
|
||||
}
|
||||
|
||||
/* First, we look for a class template. */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2002-06-27 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/6695
|
||||
* g++.dg/template/friend7.C: New file.
|
||||
|
||||
2002-06-27 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/string-opt-8.c (strncmp): Fix typo in
|
||||
|
|
33
gcc/testsuite/g++.dg/template/friend7.C
Normal file
33
gcc/testsuite/g++.dg/template/friend7.C
Normal file
|
@ -0,0 +1,33 @@
|
|||
// { dg-do compile }
|
||||
|
||||
template <typename V>
|
||||
struct b
|
||||
{
|
||||
template <typename T>
|
||||
class a
|
||||
{
|
||||
template <typename>
|
||||
friend class a;
|
||||
|
||||
T t_;
|
||||
|
||||
public:
|
||||
a() {}
|
||||
a(a<T *> const &);
|
||||
};
|
||||
};
|
||||
|
||||
template <typename V>
|
||||
template <typename T>
|
||||
b<V>::a<T>::a(a<T *> const &rhs): t_(*rhs.t_)
|
||||
{}
|
||||
|
||||
|
||||
int
|
||||
f ()
|
||||
{
|
||||
b<void *>::a<char *> q;
|
||||
b<void *>::a<char> w(q);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue