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