Yes, you're right. I've done that in high-performance code where I couldn't afford the double function call of a virtual function. I forgot about that.
Likewise this is getting easier with the auto keyword now being sugar for templates when used in function arguments and return values