Понедельник, 12 декабря 2022, 5:19 +03:00 от Andrew Schepler <aschepler@gmail.com>:
On Thu, Dec 8, 2022 at 11:32 AM Vladimir Grigoriev via Std-Discussion <std-discussion@lists.isocpp.org> wrote:Well, and what about this declarationvoid h( auto x ) requires requires { sizeof( x ) == sizeof __func__; };Is it valid?Still no. The term "function-local predefined variable" and the variable __func__ are described in [dcl.fct.def.general] in the context of a function definition. Since this is not a function definition, there are no function-local predefined variables. No __func__ variable exists for this code at all, so statements about its scope don't apply.--As it is said in the Standard the function-local predefined variable has function parameter scope.With best regards(Vlad from Moscow)Четверг, 8 декабря 2022, 15:24 +03:00 от language.lawyer@gmail.com:
> According to the C++ 20 Standard (Reference: 6.4.4 Function parameter scope)
> «1 A function parameter (including one appearing in a lambda-declarator) or function-local predefined variable (9.5) has function parameter scope….»
The next sentence: «The potential scope of a parameter or function-local predefined variable begins at its point of declaration»
[basic.scope.pdecl]/9: «The point of declaration for a function-local predefined variable is immediately before the function-body of a function definition.»
> So should this function declaration be valid?
>
> void f( size_t n = sizeof __func__ );
No.
> Pay attention to that there is used a function declaration that is not the function definition.
There is no point of declaration of __func__ here, then.
Std-Discussion mailing list
Std-Discussion@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion