Fixes are available
XL C/C++ for AIX Fix Pack 7 (January 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 8 (March 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 11 (February 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 12 (May 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 13 (August 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 14 (December 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 15 (April 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 16 (July 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 17 (November 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 18 (February 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 19 (August 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 20 (March 2018 Update) for 12.1
XL C/C++ for AIX Fix Pack 6 (December 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 9 (July 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 10 (October 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 21 (January 2019 Update) for 12.1
APAR status
Closed as program error.
Error description
Reduced testcase: $cat b.cpp namespace Tpetra{ template<class Scalar, class LocalOrdinal,class GlobalOrdinal,class Node> struct MultiVector {}; } namespace Xpetra { template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node> struct MultiVector{}; } struct Epetra_MultiVector{}; template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node, class LocalMatOps> struct Utils { typedef LocalOrdinal LO; typedef GlobalOrdinal GO; typedef Node NO; typedef LocalMatOps LMO; typedef Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> MultiVector; typedef Scalar SC; static RCP<const Epetra_MultiVector> MV2EpetraMV(RCP<MultiVector> const Vec); static RCP< Tpetra::MultiVector<SC,LO,GO,NO> > MV2NonConstTpetraMV(RCP<MultiVector> Vec); }; template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node, class LocalMatOps> RCP<Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > Utils<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>::MV2NonConstTpetraMV(RCP<MultiVector> Vec) { } template struct Utils<int,int,int,int,int>; $xlC b.cpp "b.cpp", line 29.1: 1540-1174 (S) The member "template RCP<MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > MV2NonConstTpetraMV(RCP<MultiVector<Scalar,LocalOrdinal,GlobalOr dinal,Node> >)" is not declared as a template in its containing class definition.
Local fix
Define the member functions inside the class instead of out-of-line.
Problem summary
PROBLEM DESCRIPTION: The compiler was confusing matching names in different namespaces while resolving names in a template definition. This caused an error that a member defined out-of-line was not defined in its class. USERS AFFECTED: The problem may be seen when a class refers to the instantiation of a template with the same name in 2 different namespaces.
Problem conclusion
The problem has been resolved.
Temporary fix
Comments
APAR Information
APAR number
IV53339
Reported component name
XL C/C++ FOR AI
Reported component ID
5725C7200
Reported release
C10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2013-12-13
Closed date
2013-12-13
Last modified date
2013-12-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
XL C/C++ FOR AI
Fixed component ID
5725C7200
Applicable component levels
Document Information
Modified date:
03 October 2021