The following valid code snippet is rejected since GCC 3.4.2
(and in GCC 3.3.x):
=========================================================================
template<typename> struct A
{
static void* operator new(__SIZE_TYPE__);
template<typename T> friend void* A<T>::operator new(__SIZE_TYPE__);
};
A<int> a;
=========================================================================
bug.cc:4: error: invalid template declaration of 'static void* A<T>::operator
new(long unsigned int)'
We also get an ICE since GCC 3.4.2, which was fixed on mainline by the
patch for PR 27559. The ICE is dealt with in PR 27713.
--
Summary: [4.0/4.1/4.2 regression] operator new as friend in
template class rejected
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code, rejects-valid, monitored
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27714