From 34e92724d61b8ae1da7f5c16d6b98b6decbe2ed5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 27 Nov 2025 17:43:48 +0100 Subject: [PATCH 1/2] AutoDelete: Add move constructor --- src/libutil/include/nix/util/file-system.hh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libutil/include/nix/util/file-system.hh b/src/libutil/include/nix/util/file-system.hh index 110cb7962..f710e982f 100644 --- a/src/libutil/include/nix/util/file-system.hh +++ b/src/libutil/include/nix/util/file-system.hh @@ -293,8 +293,16 @@ class AutoDelete bool recursive; public: AutoDelete(); + + AutoDelete(AutoDelete && x) + { + _path = std::move(x._path); + del = x.del; + recursive = x.recursive; + x.del = false; + } + AutoDelete(const std::filesystem::path & p, bool recursive = true); - AutoDelete(AutoDelete &&) = delete; AutoDelete(const AutoDelete &) = delete; AutoDelete & operator=(AutoDelete &&) = delete; AutoDelete & operator=(const AutoDelete &) = delete; From 0f4c7204f783680267de7795aad27874fdd73e2c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 1 Dec 2025 13:46:59 +0100 Subject: [PATCH 2/2] Mark move constructor as noexcept Co-authored-by: Sergei Zimmerman --- src/libutil/include/nix/util/file-system.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libutil/include/nix/util/file-system.hh b/src/libutil/include/nix/util/file-system.hh index f710e982f..7d88939e3 100644 --- a/src/libutil/include/nix/util/file-system.hh +++ b/src/libutil/include/nix/util/file-system.hh @@ -294,7 +294,7 @@ class AutoDelete public: AutoDelete(); - AutoDelete(AutoDelete && x) + AutoDelete(AutoDelete && x) noexcept { _path = std::move(x._path); del = x.del;