我__int128在我的C++程序中使用GCC内置类型的一些东西,没有什么真正重要的,至少不足以证明仅仅为此使用BigInt库,并且足以防止完全删除它.
当我遇到我的课程的打印部分时,我的问题出现了,这是一个最小的例子:
#include <iostream>
int main()
{
__int128 t = 1234567890;
std::cout << t << std::endl;
return t;
}
Run Code Online (Sandbox Code Playgroud)
注释掉这一std::cout行会使这段代码很好地编译g++,但是它会导致以下错误信息:
int128.c: In function ‘int main()’:
int128.c:7:13: error: ambiguous overload for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘__int128’)
std::cout << t << std::endl;
^
int128.c:7:13: note: candidates are:
In file included from /usr/include/c++/4.9/iostream:39:0,
from int128.c:1:
/usr/include/c++/4.9/ostream:108:7: note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type …Run Code Online (Sandbox Code Playgroud)