文章说明了 std::optional::value_or 会提前求值,从而导致不必要的计算,并指出 C++23 的 std::optional::or_else 通过接受可调用对象实现惰性求值。随后提供了一种通用方法,使其他 STL 函数(如 std::map::try_emplace)也能实现惰性求值。
背景
惰性初始化在真正需要结果时才进行耗时计算,常用于提升性能。C++ 中函数参数在调用前会先求值,这会导致像 std::optional::value_or 这样的接口失去惰性。
- 来源
- Lobsters
- 发布时间
- 2026年9月13日 20:50
- 评分
- 5.0 / 10