This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2024-11-11


761. Inferred return type of closure object call operator

Section: 7.5.6.2  [expr.prim.lambda.closure]     Status: CD2     Submitter: Daveed Vandevoorde     Date: 5 February, 2009

[Voted into the WP at the July, 2009 meeting as part of N2927.]

According to 7.5.6 [expr.prim.lambda] paragraph 10, the following lambda expressions are ill-formed because the return types of the generated operator() functions are an array type and a function type, respectively:

    void f() {
      []{ return ""; };
      []{ return f; };
    }

It would seem reasonable to expect the array-to-pointer and function-to-pointer decay to apply to these return values and hence to the inferred return type of operator().

Proposed resolution (July, 2009)

See document PL22.16/09-0117 = WG21 N2927.