[Info-vax] Odd behaviors of IA64 C++ Compiler?

RobertsonEricW robertsonericw at netzero.net
Mon Jun 1 10:37:41 EDT 2015


On Saturday, May 30, 2015 at 3:53:50 PM UTC-4, John Reagan wrote:
> Have you read the release notes?  The lack of comma list support and the std::cout concerns are in there.  In general, the Itanium compiler is much closer to C++98 than the Alpha compiler is.

While that may be true, I purposely used the adjective "odd" in the posting title to describe these issues because they depart from conventional behavior one would typically expect of an OpenVMS compiler; not that they were technically wrong or illegal.

1.) I found it odd that when all other compilers that I have used on OpenVMS going as far back as 1988 supported source file lists for compilation. So, I (perhaps wrongly) expected that same behavior from "newer" compilers. Is it a documented oddity? Yes. But, in my opinion, given the long and established historical context of OpenVMS compilers supporting file lists, that still does not justify the presence of the odd behavior only that the odd behavior is known to exist. The fact that the OpenVMS C++ compiler for Itanium is based on the Intel C++ compiler is also not sufficient in my opinion. How hard would it be to write a "wrapper" around the intel C++ compiler to repeatedly invoke it for multiple files in a file list in the case of OpenVMS?

2.) With respect to std::cout, this one was my fault. the Release notes only documented that the older Alpha C++ compiler tolerantly compiled references to std::cout even though the <iostream> header might not have been #include'd prior to encountering the reference to std::cout. However, in my case the <iostream> header was already #include'd. But, I have since discovered (thanks hb!)that the compilation command for the Alpha was able to use /STANDARD=LATEST but I could not use that qualifer and value on Integrity because of some strangeness with respect to how the Oracle OCCI libraries are built. This difference on Itanium had the side effect of changing the default I/O streams used to the non-ANSI standard IO streams. on which does not place cin/cout into the std namespace because they quite literally are not the same streams as the standard ones.

3.) Here again behavior is odd with respect to historical precedent. Every other C++ compiler I have ever used (even non-OpenVMS ones) has provided the default template arguments. Why should anyone expect that they would not be supplied by a "newer" compiler?



More information about the Info-vax mailing list