diff --git a/breathe/renderer/sphinxrenderer.py b/breathe/renderer/sphinxrenderer.py index e0a2c449..a8b344fe 100644 --- a/breathe/renderer/sphinxrenderer.py +++ b/breathe/renderer/sphinxrenderer.py @@ -1012,6 +1012,18 @@ def visit_function(self, node): elif node.refqual == 'rvalue': signature += '&&' + # Add trailing return type manually: + # https://github.com/michaeljones/breathe/issues/441 + if 'auto' in node.definition and '->' in node.argsstring: + index = node.argsstring.find('->') + trailing_return_type = node.argsstring[index:] + + # Remove unnecessary default/delete/pure specifier which comes from doxygen's argsstring + if '=' in trailing_return_type: + index = len(trailing_return_type) - (trailing_return_type.find('=')) + trailing_return_type = trailing_return_type[:-index] + signature += ' ' + trailing_return_type + # Add `= 0` for pure virtual members. if node.virt == 'pure-virtual': signature += '= 0'