C++

编译器是如何看待你的代码的

你可以在 https://cppinsights.io/

看到C++的编译器是怎么看待你的代码的。

我们可以通过这个来看Lambda的真面目

int main()
{
    [](){};
}
int main()
{
    
  class __lambda_5_5
  {
    public: 
    inline /*constexpr */ void operator()() const
    {
    }
    
    using retType_5_5 = void (*)();
    inline /*constexpr */ operator retType_5_5 () const noexcept
    {
      return __invoke;
    };
    
    private: 
    static inline void __invoke()
    {
    }
    
    
  } __lambda_5_5{};
  
  ;
}

我们可以看到lambda表达式实际上是定义了一个本地类

发表评论

电子邮件地址不会被公开。 必填项已用*标注