| 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