Does it evaluate the type at run time and then choose the appropriate function, cause if this is the case it seems very ineffective and I was asking if there is a way to make the compiler select the function at compile time. (as it is possible for operator overloading)