C++11 a été lors de l' std::labs
et std::llabs
ont été ajoutés. Cela faisait partie de la synchronisation partielle faite à la norme C++ de la bibliothèque avec le standard C99 bibliothèque.
Vous n'avez pas vraiment besoin du code C++, parce que nous avions un long
de surcharge de std::abs
depuis toujours. Mais si vous avez du code C (qui par pure coïncidence compile également les avec un compilateur C++), et il utilise labs
, vous pouvez le compiler avec un compilateur C++11 et de la bibliothèque standard.
En rétrospective, il y a une utilité marginale en cas d'utilisation de ces fonctions. Et c'est lors d'une tentative pour utiliser std::abs
"est ambigu. Par exemple:
template<typename T>
T run_func(T (&f)(T)) {
return f({});
}
Puis d'essayer de les appeler run_func(std::abs);
est mal formé. Nous avons besoin de spécifier l'argument de modèle explicitement ou cast std::abs
pour le type approprié. D'autre part run_func(std::labs);
n'est pas ambigu, et pas trop verbeux.
Encore, pas trop utile.