C ++ ISO仕様によると、§26.2/ 2:
、または
complex以外のタイプのテンプレートをインスタンス化する効果は指定されていません。floatdoublelong double
標準の作成者がこの制限を明示的に追加するのはなぜですか?complex<int>これにより、不特定になります。たとえば、またはを作成complex<MyCustomFixedPointType>して人為的な制限のように見える場合はどうなりますか。
この制限の理由はありますか?complex独自のカスタムタイプでインスタンス化する場合の回避策はありますか?
私が主にこの質問をしているのは、この以前の質問absのためです。この質問では、OPがに奇妙な出力を提供する理由について混乱していましたcomplex<int>。complexとはいえ、固定小数点型やより高精度の実数などから数値を作成したい場合もあることを考えると、これはまだまったく意味がありません。