条款34:优先使用Lambda而非stdbind
Lambda语法清晰直观,支持内联优化;std::bind语义复杂、可读性差,除特殊场景外应避免使用。
Lambda语法清晰直观,支持内联优化;std::bind语义复杂、可读性差,除特殊场景外应避免使用。
泛型lambda中,用decltype获取形参类型,配合std::forward实现完美转发,保持参数左/右值属性。
通过初始化捕获,可将可移动对象(如unique_ptr)安全高效地移动进lambda闭包,避免拷贝开销。
默认捕获容易引发潜在悬挂指针或捕获不明确,安全性和代码可读性差,应显式指定捕获。
C++返回值优化(RVO)是编译器直接在调用者内存构造返回对象,避免拷贝或移动,提高性能的优化技术。
花括号初始化、重载函数名、位域、静态常量未定义等会导致失败。
移动可能不可用或效率低,需注意noexcept声明和类型支持。
多层引用合并,规则如 & + && → &,防止产生非法引用类型。
用enable_if或概念限制模板参数,实现更安全的重载选择。
万能引用重载易导致推导冲突,推荐用模板特化或SFINAE替代。