看一下下面的代码:
#include <complex>
#include <iostream>
int main()
{
std::cout << std::pow( std::complex<double>(0,0), std::complex<double>(0,0) ) << "\n";
std::cout << std::pow( std::complex<double>(0,0), double(0) ) << "\n";
return 0;
}
使用g++(4.8.1)编译的输出结果为
(nan,nan)
(-nan,-nan)
当使用clang++(3.3)编译时,会输出:
(-nan,-nan)
(-nan,-nan)
但是我期望的是(1.0, 0.0)。
有人能给出解释吗?