diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-10-09 17:54:59 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-10-09 17:54:59 +0200 |
commit | e845d19ae368cb9ee6371c4b2fdbdc86a110d893 (patch) | |
tree | 20e9ae4b70d9e5f3a3de21e7486d7bee5c541acd /src/libutil/lazy.hh | |
parent | 87157b2bd3224b8329ffcb73e92c64bdc36cff16 (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.hh | 48 |
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; - } -}; - -} |