Fixes are available
April 2009 XL C/C++ Enterprise Edition V8.0 for AIX PTF
May 2007 XL C/C++ Enterprise Edition V8.0 for AIX PTF
December 2006 XL C/C++ Enterprise Edition V8.0 for AIX PTF
May 2008 XL C/C++ Enterprise Edition V8.0 for AIX PTF
August 2008 XL C/C++ Enterprise Edition V8.0 for AIX PTF
February 2007 XL C/C++ Enterprise Edition V8.0 for AIX PTF
November 2007 XL C/C++ Enterprise Edition V8.0 for AIX PTF
August 2006 XL C/C++ Enterprise Edition V8.0 for AIX PTF
April 2010 XL C/C++ Enterprise Edition V8.0 for AIX PTF
June 2011 XL C/C++ Enterprise Edition V8.0 for AIX PTF
July 2009 XL C/C++ Enterprise Edition V8.0 for AIX PTF
October 2009 XL C/C++ Enterprise Edition V8.0 for AIX PTF
July 2007 XL C/C++ Enterprise Edition V8.0 for AIX PTF
August 2007 XL C/C++ Enterprise Edition V8.0 for AIX PTF
February 2008 XL C/C++ Enterprise Edition V8.0 for AIX PTF
November 2008 XL C/C++ Enterprise Edition V8.0 for AIX PTF
APAR status
Closed as program error.
Error description
*** This APAR is a copy of another APAR which addressed the same issue in another release of this product. The text of this APAR is taken from the original APAR. *** Following error occurs in SUSE SLES Linux for XL C/C++ Advanced Edition V8.0 when using the -qstaticinline option: ---------------------------------------------------------------- "/usr/include/g++/bits/stl_map.h", line 585.17: 1540-0400 (S) "template <class _K1, class _T1, class _C1, class _A1> std::operator==(const map<_K1,_T1,_C1,_A1> &, const map<_K1,_T1,_C1,_A1> &)" has a conflicting declaration. "/usr/include/g++/bits/stl_map.h", line 605.5: 1540-0425 (I) "operator==" is defined on line 605 of "/usr/include/g++/bits/stl_map.h". ---------------------------------------------------------------- ======================TEST CASE================================ using namespace std ; #include <map> class I3 { int ix[3]; public : I3() { ix[0] = ix[1] = ix[2] = 0; } I3(const int& i, const int& j, const int& k) {ix[0] = i; ix[1]= j; ix[2] = k;} ~I3() { } int operator[](const int& i) const { return (ix[i]); } int& operator[](const int& i) { return (ix[i]); } bool operator<(const I3& y) const { if (ix[0] < y.ix[0]) return (true); if (ix[0] > y.ix[0]) return (false); if (ix[1] < y.ix[1]) return (true); if (ix[1] > y.ix[1]) return (false); if (ix[2] < y.ix[2]) return (true); return (false); } }; void createTPermutationTables(int n, int* permTable[]) { int index = 0; int size = (n-1)*n/2; int *sigma[6]; I3* pList = new I3[size]; map< class I3, int > imap ; for (int i = 0; i < n - 1; ++i) for (int j = 0; j < n - 1 - i; ++j) { pList[index] = I3(n - 2 - i - j,j,i); imap[pList[index]] = index; ++index; } for (int k = 0; k < 6; ++k) { permTable[k] = new int[size]; int* sigmaPtr = sigma[k]; map< I3, int >::iterator mapIter; //map< I3, int >::iterator mapIter; //my code for (int i = 0; i < size; ++i) { const I3& Point = pList[i]; I3 newPoint; newPoint[sigmaPtr[0]] = Point[0]; newPoint[sigmaPtr[1]] = Point[1]; newPoint[sigmaPtr[2]] = Point[2]; mapIter = imap.find(newPoint); permTable[k][i] = mapIter->second; } } delete [] pList; }
Local fix
N/A
Problem summary
Users of the option -qstaticinline with a template class containing a friend function declaration for a function defined inline. The option adds 'static' to functions declared inline and this static was being picked up during a diagnostic check of the friend declaration in a template causing the compiler to issue an error.
Problem conclusion
The diagnostic check has been updated to check only for static when it is explicitly specified and not when its implicitly specified.
Temporary fix
Comments
APAR Information
APAR number
IY88504
Reported component name
XLC C++ AIX
Reported component ID
5724M1200
Reported release
800
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2006-08-16
Closed date
2006-08-16
Last modified date
2007-09-13
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
XLC C++ AIX
Fixed component ID
5724M1200
Applicable component levels
R800 PSY U813114
07/09/13 I 1000
Document Information
Modified date:
03 October 2021