如何将用户定义的文字用于复数?

时间:2016-11-28 21:58:51

标签: c++ c++14 literals complex-numbers user-defined-literals

当我尝试执行std::pow(1.0i, 2)时,我做错了什么?是我对用户定义的文字operator""i的理解,还是我如何使用复杂的pow - 重载?

使用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)

如果我遗漏了最后一行,一切都很好。

0 个答案:

没有答案