template <class X> typename abs_functor<X>::result_type abs(X const&) ;
The reason glas has its own abs function is because of the extensibility through the use of the abs_functor<X>()(x) for which abs(X) is just a shortcut.
abs
abs(X)