我使用的是愚者的128位整数:
__extension__ using uint128_t = unsigned __int128;
uint128_t a = 545;
std::cout << a << std::endl;
但是,如果我尝试使用流操作符输出,我会得到编译器错误:
error: ambiguous overload for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘uint128_t’ {aka ‘__int128 unsigned’})
有没有办法允许这种情况发生?
Linux,愚者版本11.1,x86-64
2条答案
按热度按时间oprakyz71#
libstdc没有
__int128
的ostream
重载。但是,您可以使用C20<format>
库,该库在libstdc和libc中都支持__int128
。Demo
xoefb8l82#
您必须自己重载
<<
运算符,因为std::ostream
没有该类型的重载,因为它来自外部库。This可能会有所帮助。