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