http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45942
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-10-08
14:41:28 UTC ---
It's not entirely clear what you're saying is a bug, because your testcase
doesn't give any error.
It's more helpful to provide the source code that you claim produces the bug.
I assume you this:
template <class T, int C> class classA;
template <class T, int C, classA<T,C> &instanceA> class classB;
template <class T, int C> class classA
{
// incorrect error message: partial specialization claimed but not apparent
template <classA &instanceA> friend class classB<T,C,instanceA>;
private:
int for_use_by_classB;
};
template <class T, int C, classA<T,C> &instanceA> class classB
{
classB (int i) { instanceA.for_use_by_classB = i; }
};
// instantiation
template class classA<char,128>;
That code is not valid, the error is not incorrect.
You have declared classB as a friend, and as a template with one template
parameter, instanceA, and the template arguments <T,C,instanceA>. That is a
partial specialization.