Fixes are available
APAR status
Closed as program error.
Error description
When compiling the test case below, the compiler issues an incorrect error message. The diagnostic refers to this line: typedef char staticassert_type[sizeof(Type) == 2 ? 2 : 0]; // But this is NOT !! indicating that sizeof(Type) is not 2. The line just above it /// char staticassert_var[sizeof(Type) == 2 ? 2 : 0]; is accepted, when uncommented. If you uncommend line 4, and comment line 5 instead, the program compiles and links. When you run it, the value it returns is 2 (sizeof(Resolver<int>::Type)). ===== COMPILE COMMAND: xlC test.cpp ===== TESTCASE: $ cat test.cpp template <typename T> struct Resolver { typedef struct { char a[2]; } Type; // char staticassert_var[sizeof(Type) == 2 ? 2 : 0]; // This is accepted typedef char staticassert_type[sizeof(Type) == 2 ? 2 : 0]; // But this is NOT !!! }; int main() { return sizeof(Resolver<int>::Type); } $ ===== ACTUAL OUTPUT: $ xlC test.cpp "test.cpp", line 5.54: 1540-0135 (S) The array bound cannot be zero. $ ===== EXPECTED OUTPUT: Clean compile
Local fix
n/a
Problem summary
USERS AFFECTED: The problem can be seen when a sizeof expression is used to compute an array bound inside a template definition. PROBLEM DESCRIPTION: The compiler was incorrectly evaluating a sizeof expression inside a template definition and reporting an error.
Problem conclusion
The compiler has been fixed to resolve the above issue.
Temporary fix
Comments
APAR Information
APAR number
LI77400
Reported component name
XL C/C++ FOR LI
Reported component ID
5724X1400
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2013-06-11
Closed date
2013-06-11
Last modified date
2013-06-11
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 LI
Fixed component ID
5724X1400
Applicable component levels
RB10 PSN IV33977
UP06/09/13
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSXVZZ","label":"XL C\/C++ for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B10","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
14 October 2021