[Bug c++/86747] [8/9 Regression] rejects-valid with redundant friend declaration
nathan at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jul 30 22:31:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86747
Nathan Sidwell <nathan at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-07-30
Ever confirmed|0 |1
--- Comment #2 from Nathan Sidwell <nathan at gcc dot gnu.org> ---
Let's reduce the anonymousness:
template <typename T> class A {
template <void (A::*p)()> class C; // #1
template <void (A::*q)()> friend class C; // #2
};
A<double> a;
tf.cc: In instantiation of ‘class A<double>’:
tf.cc:6:11: required from here
tf.cc:2:26: error: template parameter ‘void (A<T>::* p)()’
template <void (A::*p)()> class C;
^
tf.cc:3:42: error: redeclared here as ‘void (A<double>::* q)()’
template <void (A::*q)()> friend class C;
It looks like we're not tsubsting the declaration of #1 in A<double>, but are
doing so for the friend decl #2.
More information about the Gcc-bugs
mailing list