我正在尝试在GCC中使用quadmath库.我有一个复杂的双值我想要转换成相应的四精度复数,__complex128
.以下是最小(非)工作示例:
#include#include #include using namespace std::complex_literals; int main(){ std::complex x = 1 + 2i; std::printf("x = %5.5g + %5.5g\n", x.real(), x.imag()); __complex128 y = 2+2i; y = x; return 0; }
当我尝试编译此代码时
g++ test.cpp -lquadmath -o test
我收到以下错误:
test.cpp:10:6: error: cannot convert 'std::complex' to '__complex128 {aka __complex__ __float128}' in assignment y = x;
如果我尝试用显式类型转换替换赋值行,
y = (__complex128) x;
我得到了类似的错误
test.cpp:10:21: error: invalid cast from type 'std::complex' to type '__complex128 {aka __complex__ __float128}' y = (__complex128) x;
如何在这两种类型之间进行转换?