IBM Support

IY88504: ERROR:CONFLICTING TEMPLATE DECLARATIONS

Subscribe

You can track all active APARs for this component.

 

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:

    LI71316

  • 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

[{"Line of Business":{"code":"LOB08","label":"Cognitive Systems"},"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSJT9L","label":"XL C\/C++"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0"}]

Document Information

Modified date:
03 October 2021