The program is well-formed and msvc is wrongmsvc is wrong to reject the program, as explained below.
First, from expr.prim.lambda#8:
The closure type for a non-generic lambda-expression with no lambda-capture whose constraints (if any) are satisfied has a conversion function to pointer to function with C++ language linkage having the same parameter and return types as the closure type's function call operator. The conversion is to “pointer to noexcept function” if the function call operator has a non-throwing exception specification. If the function call operator is a static member function, then the value returned by this conversion function is the address of the function call operator. Otherwise, the value returned by this conversion function is the address of a function
Fthat, when invoked, has the same effect as invoking the closure type's function call operator on a default-constructed instance of the closure type.Fis a constexpr function if the function call operator is a constexpr function and is an immediate function if the function call operator is an immediate function.
This means that L already has a non-static conversion function that returns the address of such a function F which when invoked has the effect of invoking L's function call operator.
Next, since A inherits from L, it will also inherit the above mentioned conversion function as per class.derived:
Members of a base class are also members of the derived class.
Basically, we don't need to define/declare the conversion function again in the derived class as it is already a member of derived class.
Here is the newly submitted msvc bug:
https://developercommunity.visualstudio.com/t/MSVC-rejects-valid-program-involving-inh/11040924