aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--src/libexpr/attr-set.hh9
2 files changed, 10 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 5a2526672..b550231cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,7 +62,7 @@ CXXFLAGS=
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
-AX_CXX_COMPILE_STDCXX_14
+AX_CXX_COMPILE_STDCXX_17
# Use 64-bit file system calls so that we can support files > 2 GiB.
diff --git a/src/libexpr/attr-set.hh b/src/libexpr/attr-set.hh
index 3119a1848..6c5fb21ad 100644
--- a/src/libexpr/attr-set.hh
+++ b/src/libexpr/attr-set.hh
@@ -4,6 +4,7 @@
#include "symbol-table.hh"
#include <algorithm>
+#include <optional>
namespace nix {
@@ -63,6 +64,14 @@ public:
return end();
}
+ std::optional<Attr *> get(const Symbol & name)
+ {
+ Attr key(name, 0);
+ iterator i = std::lower_bound(begin(), end(), key);
+ if (i != end() && i->name == name) return &*i;
+ return {};
+ }
+
iterator begin() { return &attrs[0]; }
iterator end() { return &attrs[size_]; }