limits.h (climits) vs limits
-
kann man ruhigen gewissens INT_MAX verwenden oder sollte/muss man std::numeric_limits<int>().max() nehmen?
mfg foobar
-
das sollte sowohl von der performance als auch vom ergebnis her egal sein, wobei limits natürlich viel mehr informationen bietet.
-
INT_MAX nützt in generischem Code (bzgl. des Typs) nichts, dafür ist es selbst ein konstanter Ausdruck. Abgesehen davon ist es nur eine Frage des Stils.
-
in numreic_limits sehen die werte auf den meisten systemen so oder so ähnlich aus:
template<> struct numeric_limits<bool> { static const bool is_specialized = true; .... static const int digits = 1; static const int digits10 = 0; .... }die sind also auch konstant und werden zur compile-zeit genauso reingesetzt wie der werte von INT_MAX.
-
ghorst schrieb:
in numreic_limits sehen die werte auf den meisten systemen so oder so ähnlich aus:
template<> struct numeric_limits<bool> { static const bool is_specialized = true; .... static const int digits = 1; static const int digits10 = 0; .... }die sind also auch konstant und werden zur compile-zeit genauso reingesetzt wie der werte von INT_MAX.
Das gilt aber nicht für min und max. Das sind Funktionen, die schon für einige Kopfschmerzen gesorgt haben. Mit constexpr im nächsten Standard geht es dann so, wie sollte.