about summary refs log tree commit diff
path: root/third_party/nix/src/libutil/lazy.hh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/src/libutil/lazy.hh')
-rw-r--r--third_party/nix/src/libutil/lazy.hh45
1 files changed, 0 insertions, 45 deletions
diff --git a/third_party/nix/src/libutil/lazy.hh b/third_party/nix/src/libutil/lazy.hh
deleted file mode 100644
index 5c6ff5d8df..0000000000
--- a/third_party/nix/src/libutil/lazy.hh
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <exception>
-#include <functional>
-#include <mutex>
-
-namespace nix {
-
-/* A helper class for lazily-initialized variables.
-
-     Lazy<T> var([]() { return value; });
-
-   declares a variable of type T that is initialized to 'value' (in a
-   thread-safe way) on first use, that is, when var() is first
-   called. If the initialiser code throws an exception, then all
-   subsequent calls to var() will rethrow that exception. */
-template <typename T>
-class Lazy {
-  typedef std::function<T()> Init;
-
-  Init init;
-
-  std::once_flag done;
-
-  T value;
-
-  std::exception_ptr ex;
-
- public:
-  explicit Lazy(Init init) : init(init) {}
-
-  const T& operator()() {
-    std::call_once(done, [&]() {
-      try {
-        value = init();
-      } catch (...) {
-        ex = std::current_exception();
-      }
-    });
-    if (ex) {
-      std::rethrow_exception(ex);
-    }
-    return value;
-  }
-};
-
-}  // namespace nix