aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/lazy.hh
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-10-09 17:54:59 +0200
committerEelco Dolstra <edolstra@gmail.com>2020-10-09 17:54:59 +0200
commite845d19ae368cb9ee6371c4b2fdbdc86a110d893 (patch)
tree20e9ae4b70d9e5f3a3de21e7486d7bee5c541acd /src/libutil/lazy.hh
parent87157b2bd3224b8329ffcb73e92c64bdc36cff16 (diff)
Remove Lazy
This fixes a crash during startup when compiling Nix as a single compilation unit.
Diffstat (limited to 'src/libutil/lazy.hh')
-rw-r--r--src/libutil/lazy.hh48
1 files changed, 0 insertions, 48 deletions
diff --git a/src/libutil/lazy.hh b/src/libutil/lazy.hh
deleted file mode 100644
index d073e486c..000000000
--- a/src/libutil/lazy.hh
+++ /dev/null
@@ -1,48 +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:
-
- 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;
- }
-};
-
-}