type_traits version 2