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