「キャッシュされた計算」/「キャッシュされたゲッター」に共通のパターンまたはすぐに使用できるブーストクラスはありますか?
私はこのようなことを意味します:
class Test{
public:
Value getValue() const;
protected:
Value calculateValue() const;//REALLY expensive operation.
mutable bool valueIsDirty;
mutable Value cachedValue;
}
Value Test::getValue() const{
if (valueIsDirty){
cachedValue = calculateValue();
valueIsDirty = false;
}
return cachedValue;
}
マクロを使用std::pair<Value, bool>
して変換することはできますが、値が他の値 (他のクラスに格納されている) に依存し、それらの値もキャッシュできるgetValue/calculateValue
場合、これはあまり役に立ちません。
この種の「パターン」にすぐに使用できるソリューションはありますか? 現時点では、このようなキャッシュされた値を手動で処理していますが、これは「きれい」ではありません。
制限:
c++03 標準。ブーストは許可されています。