https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120775
--- Comment #38 from Boris Staletic <boris.staletic at protonmail dot com> --- Jakub, thanks for the quick reply. So, the ICE, the the expansion statements and the `_`-named members aside (as those are known and being worked on), I see that I failed to provide a repro for error 3 from my previous comment. I don't know what happened and why it started working... Anyway, that error was supposed to be distilled from P2996's "struct to tuple" example. Here's the actual error: https://godbolt.org/z/dW4vbdKeM If the line is changed from return std::make_tuple(t.[:members:]...); to return std::make_tuple(t.*&[:members:]...); The error changes to "lvalue required as unary '&' operand". If this is known as well and there's a workaround, I can try the gcc reflection impl on my library over the weekend.
