当我尝试执行时我做错了什么std::pow(1.0i, 2)
?是我对用户定义文字的理解operator""i
,还是我如何使用复杂的pow
-overload?
使用 g++-6.2 或 g++-5 编译时,最后一行显示错误:
#include <iostream>
#include <complex>
using std::cout; using std::complex;
int main() {
complex<double> z1 (0, 1);
complex<double> z2 = std::pow(z1, 2);
using namespace std::complex_literals;
complex<double> z3 = std::pow(1.0i, 2); // <<< error
}
消息是:
error: no matching function for call to ‘pow(__complex__ double, int)’
complex<double> z3 = std::pow(1.0i, 2)
如果我省略最后一行,一切都很好。