BUG: Stream Operator << Cannot Handle __int64 TypeLast reviewed: October 8, 1997Article ID: Q168440 |
The information in this article applies to:
SYMPTOMSIf you try to pass an __int64 variable to the ostream operator <<, you get the following error:
"error C2593: 'operator <<' is ambiguous" CAUSEThere is no operator << for __int64 type defined for the ostream class.
RESOLUTIONDefine your own version of operator <<. The following sample code section shows a simple solution for << operator that converts the __int64 variable to a char * type and passes it to the ostream << operator.
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATIONThe following sample program demonstrates the problem and workaround:
//Sample.cpp // Compiler Options : /GX //#define WORKAROUND //Uncomment this line to workaround #include<iostream> using namespace std; #ifdef WORKAROUND std::ostream& operator<<(std::ostream& os, __int64 i ) { char buf[20]; sprintf(buf,"%I64d", i ); os << buf; return os; } #endif int main(){ __int64 i64; cout << i64 ; return 0; } Keywords : CRTIss vcbuglist500 kberrmsg kbbuglist Version : 5.0 Platform : NT WINDOWS Issue type : kbbug |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |