def create_typedef(<EOL>self,<EOL>typedef_name,<EOL>class_alias=None,<EOL>with_defaults=True):
has_const_str = '<STR_LIT>'<EOL>if self.has_const:<EOL><INDENT>has_const_str = '<STR_LIT>'<EOL><DEDENT>if None is class_alias:<EOL><INDENT>if with_defaults:<EOL><INDENT>class_alias = self.class_inst.decl_string<EOL><DEDENT>else:<EOL><INDENT>class_alias = self.class_inst.partial_decl_string<EOL><DEDENT><DEDENT>return member_function_type_t.TYPEDEF_NAME_TEMPLATE % {<EOL>'<STR_LIT>': typedef_name,<EOL>'<STR_LIT>': self.return_type.build_decl_string(with_defaults),<EOL>'<STR_LIT:class>': class_alias,<EOL>'<STR_LIT>': '<STR_LIT:U+002C>'.join(<EOL>[_f(x, with_defaults) for x in self.arguments_types]),<EOL>'<STR_LIT>': has_const_str}<EOL>
creates typedef to the function type

        :param typedef_name: desired type name
        :rtype: string