C++ предоставляет функцию std::numeric_limits<T>::infinity() и макрос INFINITY для представления бесконечности. В общем, в чем разница между ними? Когда одно предпочтительнее другого?
cmath просто импортирует функции стандартной библиотеки c. Макрос INFINITY определен нечетко, функции ограничений С++ доступны для нескольких типов, поэтому, вероятно, они более применимы в программах на С++.
Отвечает ли это на ваш вопрос? Способы представления бесконечности с плавающей запятой в C++





INFINITY — это макрос, который расширяется до константы с плавающей запятой. numeric_limits<T>::infinity является общим, поэтому вы можете использовать его в шаблонах. Пример:
template <std::floating_point F>
F foo(F number) {
if (someCondition(number)) {
return numeric_limits<F>::infinity();
}
// ...
}
У использования numeric_limits<T>::infinity нет недостатков, поэтому вы всегда должны предпочесть его макросу.
Эмпирическое правило: с кодом C++ используйте стандартные определения C++.