The identity metafunction stores the type provided in value. The is_same metafunction uses partial template specialization to determine at compile time if two object types are the same. namespace framework { namespace meta { template struct identity { typedef T value; }; template struct is_same { enum { value = false }; }; template struct is_same { enum { value = true }; }; } // namespace meta } // namespace framework Examples: identity::value f = 3.14159f; true == is_same::value, int>::value; ---- TemplateMetaprogrammingTechniques CategoryCppTemplates