tail recursion kicks in only if the call is the expression in a return statement:
return myfunction(a,b,c);
this code is always a tail recursion, there aren't any other case.
if you don't care about the return value of your function, you still have to call it like this to make the tail recursion happend.
also if the function is a C++ native function it will never be invoked as a tail call.
I hope this helps
Alberto