Mutable.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 
5 #include "boca/generic/Debug.hh"
6 
7 #include <array>
8 
9 namespace boca
10 {
11 
18 template<typename Member_>
19 class Mutable
20 {
21 public:
22 
23  Member_ const& Get(std::function<Member_()> const& function) const {
24  if (set_) return member_;
25  member_ = function();
26  set_ = true;
27  return member_;
28  }
29 
30  void Reset() {
31  set_ = false;
32  }
33 
34 private:
35 
36  mutable Member_ member_;
37 
38  mutable bool set_ = false;
39 
40 };
41 
42 }
Lazy caching of variables.
Definition: Mutable.hh:19
void Reset()
Definition: Mutable.hh:30
Boosted Collider Analysis.
Definition: Analysis.hh:15
Member_ const & Get(std::function< Member_()> const &function) const
Definition: Mutable.hh:23