Starting from C++17, [expr.prim.lambda.closure]p9 requires that "The [lambda to function pointer] conversion function [...] has a non-throwing exception specification".
This commit adds such a specification to the generated conversion functions.
Pre-C++17 standards don't have this requirement; however, it was reflected in DR 1722.
Due to that, the specification is added unconditionally, no matter what standard revision is used.
Issue related: https://bugs.llvm.org/show_bug.cgi?id=40309
I would update the previous comment rather than add this one. `The conversion function is always const with a non-throwing exception specification." or some such.