Use a Template Meta Function instead of a Macro