这个问题已经在这里找到答案:为什么C++中没有指定复杂的整数?
Why does C++ mandate that complex only be instantiated for float, double, or long double?
不过,我没有看到答案有多么有效。公认的原因是:
你不能正确地实现 整数的许多std :: complex操作。例如,
模板 T abs(const complex &z);
一个复杂 不能有T =长的返回值...
不过,我看不出有任何理由不。
例如,如果我有1234567 + 7654321i
,那么abs()约为7753243.557。整数结果(如7753243或7753244)可能非常有用。只要机制是一致的,那么给出的结果并不重要。 (就像我们接受5/3 = 1一样)。
任何人都可以提供任何想法,为什么复杂的整数不可用?
你的意思是[高斯整数](http://en.wikipedia.org/wiki/Gaussian_integer)? – 2014-11-05 20:57:14
IDK肯定,但我不清楚你期望'abs(std :: complex(3,5))'做什么。在任何情况下,你都可以编写自己的类来实现你想要做的任何事情。 –
2014-11-05 21:01:02
请参阅http://stackoverflow.com/questions/11108743/一个很好的解释 – uesp 2014-11-05 21:02:24