跳转至

使用lambda来绑定函数

  • bind本来是C++03的产物,用法比较固定
  • lambda 表达式是内联的,效率更高
  • 灵活性和通用性:Lambda 表达式可以接受任意数量和类型的参数,这使得它们更加通用和灵活。你可以在 lambda 表达式中捕获任意变量,并在需要时使用它们
  • 完美转发:可以使用 std::forward 来完美转发参数,这意味着参数的值类别(lvalue 或 rvalue)会被保留。对于性能优化和正确处理参数的移动语义非常重要。
  • 异常安全:Lambda 表达式可以更容易地编写成异常安全的代码,因为你可以控制资源的获取和释放,以及异常的传播。
    // #define CD_BIND_EVENT_FN(fn) std::bind(&fn, this, std::placeholders::_1)
    
    #define CD_BIND_EVENT_FN(fn) [this](auto&&... args) -> decltype(auto) { return this->fn(std::forward<decltype(args)>(args)...); }
    

代码性能检测工具

  • 一些内存泄漏问题得到了解决
  • 此外更加规范了chrono库的使用