先前的 Lazy 其中一個特性是:運算式/資源只會被執行/索求一次。實作此特性用到了 Optional,位置: folly/Optional.h Lazy 實作 operator() 覆載函數如下: result_type& operator()() { if (!value_) value_ = func_(); return *value_; } value_ 可被用來「判斷是否已給值(Function func_ evaluated or not)」,也可用來儲值 func_ 的回傳值。 由此來看,Optional 可以讓原本的型別多了一種「供外界查詢是否已被賦值」的能力。先前有過類似的需求,用了「急就章」解法:以 int 代表三種狀態: 為