Почему C++ предписывает, чтобы этот комплекс создавался только для float, double или long double?

Согласно спецификации C++ ISO, §26.2/2:

Эффект инстанцирования шаблона complexдля любого типа, отличного от float, doubleили long doubleне указаны.

Почему авторы стандарта явно добавили это ограничение? Это делает его неопределенным, например, что произойдет, если вы сделаете сложнымили сложными покажется искусственным ограничением.

Есть ли причина для этого ограничения? Есть ли обходной путь, если вы хотите создать экземпляр комплексас вашим собственным пользовательским типом?

Я в первую очередь задаю этот вопрос из-за этого более раннего вопроса, в котором ОП был сбит с толку относительно того, почему absдавал странные результаты для complex. Тем не менее, это все еще не совсем разумно, учитывая, что мы также можем захотеть сделать комплексныечисла из типов с фиксированной точкой, вещественных чисел более высокой точности и т. д.

39
задан Community 23 May 2017 в 11:53
поделиться