https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118629
--- Comment #9 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The trunk branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:7d561820525fd3b9d8f3876333c0584d75e7c053 commit r15-9220-g7d561820525fd3b9d8f3876333c0584d75e7c053 Author: Jason Merrill <ja...@redhat.com> Date: Fri Apr 4 17:34:08 2025 -0400 c++: __FUNCTION__ in lambda return type [PR118629] In this testcase, the use of __FUNCTION__ is within a function parameter scope, the lambda's. And P1787 changed __func__ to live in the parameter scope. But [basic.scope.pdecl] says that the point of declaration of __func__ is immediately before {, so in the trailing return type it isn't in scope yet, so this __FUNCTION__ should refer to foo(). Looking first for a block scope, then a function parameter scope, gives us the right result. PR c++/118629 gcc/cp/ChangeLog: * name-lookup.cc (pushdecl_outermost_localscope): Look for an sk_block. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/lambda/lambda-__func__3.C: New test.