From a566a3acc84386e4738711d27a250f63e59cbb6b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 18 Oct 2019 08:37:27 +0200 Subject: Optimize config::required() to move default value if possible --- libbuild2/config/utility.hxx | 11 +++++++---- libbuild2/config/utility.txx | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'libbuild2') diff --git a/libbuild2/config/utility.hxx b/libbuild2/config/utility.hxx index b1995b6..cfb7177 100644 --- a/libbuild2/config/utility.hxx +++ b/libbuild2/config/utility.hxx @@ -43,7 +43,7 @@ namespace build2 pair required (scope& root, const variable&, - const T& default_value, + T&& default_value, bool override = false, uint64_t save_flags = 0); @@ -53,12 +53,15 @@ namespace build2 inline pair required (scope& root, const string& name, - const T& default_value, + T&& default_value, bool override = false, uint64_t save_flags = 0) { - return required ( - root, root.ctx.var_pool[name], default_value, override, save_flags); + return required (root, + root.ctx.var_pool[name], + std::forward (default_value), // VC14 + override, + save_flags); } inline pair diff --git a/libbuild2/config/utility.txx b/libbuild2/config/utility.txx index 9c1455f..4c4e305 100644 --- a/libbuild2/config/utility.txx +++ b/libbuild2/config/utility.txx @@ -13,7 +13,7 @@ namespace build2 pair required (scope& root, const variable& var, - const T& def_val, + T&& def_val, bool def_ovr, uint64_t save_flags) { @@ -35,7 +35,7 @@ namespace build2 // if (!l.defined () || (def_ovr && !l.belongs (root))) { - value& v (root.assign (var) = def_val); + value& v (root.assign (var) = std::forward (def_val)); // VC14 v.extra = true; // Default value flag. n = (save_flags & save_commented) == 0; // Absence means default. -- cgit v1.1