https://medium.com/cpluspluschronicles/template-meta-programming-in-c-navigating-function-overload-complexities-7a67fd944408