While compiling a program that uses boost/cstdint.hpp from Boost Integer Library:
#include <iostream>
#include <boost/cstdint.hpp>
int main()
{
boost::int64_t i64 = -2;
boost::uint64_t ui64 = 2;
boost::uint64_t d = ui64 - i64;
std::cout << d << std::endl;
return 0;
}
front-end of Comeau C/C++ 4.3.10.1 compiler complains:
boost/cstdint.hpp", line 111: error: the
global scope has no "int64_t"
using ::int64_t;
^
However, if I reorder include directives:
#include <boost/cstdint.hpp>
#include <iostream>
then the program compiles well.
I believe that the order of header files should not be relevant here, but seems it is. I’ve submitted a ticket #3548 to Boost.Integer and I’m curious awaiting the diagnosis.
After this issue is fixed, I’m looking forward building the Generic Geometry Library using Comeau C/C++ compiler. This should help us to maintain high quality of standard and yet more portable C++ code.