I am currently writing some glsl like vector math classes in C++, and I just implemented an abs()
function like this:
template
static
There can be several things:
are you sure the first call uses std::abs
? It could just as well use the integer abs
from C (either call std::abs
explicitely, or have using std::abs;
)
the compiler might have intrinsic implementation of some float functions (eg. compile them directly into FPU instructions)
However, I'm surprised the compiler doesn't eliminate the loop altogether - since you don't do anything with any effect inside the loop, and at least in case of abs
, the compiler should know there are no side-effects.