c++ - manipulation - ¿Qué es exactamente std:: labs() para?
scale_x_discrete (1)
C ++ 11 fue cuando se agregaron std::labs
y std::llabs
. Esto fue parte de la sincronización parcial realizada con la biblioteca estándar de C ++ con la biblioteca estándar de C99.
Realmente no lo necesita en el código C ++, ya que tuvimos una long
sobrecarga de std::abs
desde siempre. Pero si tiene algún código C (que por pura coincidencia también compila con un compilador de C ++), y utiliza labs
, puede compilarlo con un compilador de C ++ 11 y una biblioteca estándar.
En retrospectiva, hay un caso de uso marginalmente útil para estas funciones. Y eso es cuando un intento de usar std::abs
es ambiguo. Por ejemplo:
template<typename T>
T run_func(T (&f)(T)) {
return f({});
}
Luego, tratando de llamar a run_func(std::abs);
está mal formado. Necesitamos especificar explícitamente el argumento de la plantilla o convertir std::abs
al tipo adecuado. Por otro lado, run_func(std::labs);
No es ambiguo, y no demasiado detallado.
Aún así, no es demasiado útil.
Leí sobre la función std::abs()
al navegar por cppreference .
En esa página también he visto una función std::labs()
. Que tiene el mismo prototipo que una de las sobrecargas std::abs()
(la de long
).
long abs( long n );
long labs( long n );
y
long long abs( long long n );
long long llabs( long long n );
Asi que,
- ¿Qué hace exactamente
std::labs()
? - ¿Dónde y cuándo uso
std::labs()
? - ¿Cuál es la diferencia entre
std::abs()
ystd::labs()
?