根据 C++ ISO 规范,§26.2/2:
为除或
complex
以外的任何类型float
实例化模板的效果是未指定的。double
long double
为什么标准作者会明确添加此限制?这使得它变得不确定,例如,如果你做出complex<int>
或 acomplex<MyCustomFixedPointType>
和看起来像是一个人为的限制会发生什么。
这种限制有原因吗?complex
如果您想使用自己的自定义类型进行实例化,是否有解决方法?
我主要是因为这个早先的问题而问这个问题,其中 OP 对为什么abs
给出奇怪的输出感到困惑complex<int>
。也就是说,这仍然不太有意义,因为我们可能还想用complex
定点类型、更高精度的实数等来制作数字。