code: def create_typedef(
              self,
              typedef_name,
              class_alias=None,
              with_defaults=True):
          
          has_const_str = ''
          if self.has_const:
              has_const_str = 'const'
          if None is class_alias:
              if with_defaults:
                  class_alias = self.class_inst.decl_string
              else:
                  class_alias = self.class_inst.partial_decl_string
  
          return member_function_type_t.TYPEDEF_NAME_TEMPLATE % {
              'typedef_name': typedef_name,
              'return_type': self.return_type.build_decl_string(with_defaults),
              'class': class_alias,
              'arguments': ','.join(
                  [_f(x, with_defaults) for x in self.arguments_types]),
              'has_const': has_const_str}
docs: creates typedef to the function type
  
          :param typedef_name: desired type name
          :rtype: string