Issue 71015
Summary [clang] seems like bug with return type deduction in case of recursive function (works in GCC)
Labels clang
Assignees
Reporter vampyrofangclub
    Here is an example
```cpp
struct Node {
  int value;
  Node* left;
 Node* right;
};

bool parse(const char*);
Node* parsePrimaryExpr();

auto parseMulExpr(auto node) {
  if (node == nullptr) node = parsePrimaryExpr();
  if (!parse("*")) return node;
 return parseMulExpr(new Node{.left = node, .right = parsePrimaryExpr()});
}

int main(){
 parseMulExpr((Node*)nullptr);
}
```
Clang gives this error
```
<source>:13:10: error: function 'parseMulExpr<Node *>' with deduced return type cannot be used before it is defined
   13 |   return parseMulExpr(new Node{.left = node, .right = parsePrimaryExpr()});
      | ^
<source>:10:6: note: 'parseMulExpr<Node *>' declared here
 10 | auto parseMulExpr(auto node) {
      |      ^
1 error generated.
Compiler returned: 1
```
https://godbolt.org/z/7WTYYben5
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to