Skip to content

Initializations with a lambda inside lambda capture #402

@erzyadev

Description

@erzyadev

Initialization with lambda inside capture puts the definition of inner lambda inside outer lambda constructor argument list:

int main(void) { 
  [var=[]{}]{};
}

translates into

int main()
{
    
  class __lambda_2_1
  {
    public: 
    inline /*constexpr */ void operator()() const
    {
    }
    
    private: 
    __lambda_2_6 var;
    
    public:
    __lambda_2_1(
    class __lambda_2_6
    {
      public: 
      inline /*constexpr */ void operator()() const
      {
      }
      
      using retType_2_6 = auto (*)() -> void;
      inline /*constexpr */ operator retType_2_6 () const noexcept
      {
        return __invoke;
      };
      
      private: 
      static inline void __invoke()
      {
      }
      
      
      public:
      // /*constexpr */ __lambda_2_6() = default;
      
    } __lambda_2_6{};
    
    const __lambda_2_6 & _var)
    : var{_var}
    {}
    
  } __lambda_2_1{__lambda_2_6};
  
  ;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions