Open
Description
Describe the bug
Enclosing capture in forward
crashes compiler
Reproduction Code
main: () [[post: (forward c$) == 5]] //error
= {
c := 5;
:() = { (forward c$); }; //error
:() = { foo(forward c$); } (); //error - possibly valid usecase
}
foo: (forward x) = std::cout << x;
https://cpp2.godbolt.org/z/E4rqKW4cn
Version
latest (38aec57)
Command lines
cppfront/cppfront $1.cpp2 -p
clang++-15 -Icppfront/include $1.cpp -std=c++20 -o $1
Expected result
Diagnostic, probably disallowing forward with capture
Actual result
cppfront: source/cppfront.cpp:2712: void cpp2::cppfront::emit(cpp2::postfix_expression_node &, bool): Assertion `!current_args.back().ptoken' failed.
Aborted (core dumped)
Additional context
Assert line is https://github.com/hsutter/cppfront/blob/main/source/cppfront.cpp#L2712
This example shows forward
can be written at call site.
Don't know if forward with capture makes sense.