先前 [https://samtsai.org/2016/01/22/022-facebook-folly-part-2/]的 Lazy
其中一個特性是:運算式/資源只會被執行/索求一次。實作此特性用到了 Optional,位置:
* folly/Optional.h
Lazy 實作 operator() 覆載函數如下:
result_type& operator()() {
if (!value_) value_ = func_();
return *value_;
}
value_ 可被用來「判斷是否已給值(Function func_ evaluated or not)」,也可用來儲值 func_ 的回傳值。
由此來看,Optional 可以讓原本的型別多了一種「供外界查詢是否已被賦值」的能力。