https://medium.com/@r.siddhesh96/c-sfinae-in-action-handling-multiple-types-with-tuples-and-variadic-templates-5b4d6d6c43ef