No, Chris, I'm not buying that argument, due to I've tweaked /usr/include/types.h a little bit, so the configuration and compilation of the cfrontend would be correct:
/*
* 64bit type for BSD compatability
*/ #ifdef __GNUC__
typedef long long int quad_t;
typedef unsigned long long int u_quad_t;
typedef long long int int64_t;
typedef unsigned long long int u_int64_t;
typedef u_int64_t uint64_t; /*Henrik: LLVM*/ #elif _MSC_VER
typedef __int64 quad_t;
typedef unsigned __int64 u_quad_t;
typedef __int64 int64_t;
typedef unsigned __int64 u_int64_t; #endif /*__GNUC__*/
This tweak seems to work.
As far as I can see, correct me if I'm wrong, it is the compiler, that can't figure out which std::basic_ostream to use. Why?
As far as I can see, correct me if I'm wrong, it is the compiler, that can't
figure out which std::basic_ostream to use. Why?
What I'm saying is that it appears that your implementation of operator<<
is not functional or is missing. You said that you are using GCC on
internix. Is it possible that when you configured/built gcc that it
didn't find 64-bit integer support and disabled it or something?
I really no nothing about internix so all I can do is speculate. Sorry.
Not sure if this will help, but something is terribly wrong, possibly with the definition of int64_t. Note that the message from the compiler is not "can't find overload" but it is "ambiguous overload". It provides what it thinks is a close match, that being an operator<< that takes a pointer to a function returning basic_ostream<char>& and taken basic_ostream<char>& as an argument. Why would it attempt to match an int64_t with a function pointer?