combine template forwarding and pointer for compilation speedup (with the cost of an additional function call indirection)