В соответствии со спецификацией ISO С++, раздел 26.2/2:
Эффект создания шаблона
complexдля любого типа, отличного отfloat,doubleилиlong double, не указан.
Почему стандартные авторы явно добавляют это ограничение? Это делает его неуказанным, например, что происходит, если вы делаете complex<int> или complex<MyCustomFixedPointType> и представляете собой искусственное ограничение.
Есть ли причина для этого ограничения? Есть ли обходной путь, если вы хотите создать экземпляр complex со своим собственным типом?
Я прежде всего задаю этот вопрос из-за этого более раннего вопроса, в котором OP был смущен тем, почему abs давал причудливые выходы для complex<int>, Тем не менее, это все еще не имеет смысла, учитывая, что мы также можем сделать цифры complex из типов фиксированных точек, более высоких точных чисел и т.д.