base_type with function_traits