https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94128
--- Comment #2 from Joel Yliluoma <bisqwit at iki dot fi> --- Yes, it is valid. — The auto parameter is valid since C++20. It is called a “placeholder type”, which has existed since C++11. C++20 made it valid also in function parameters. — The “requires” is a valid keyword since C++20. It specifies constraints that the parameter must match. The double “requires” manifests in certain situations. — Until C++20, lambdas were not permitted in unevaluated contexts. Changed in C++20.