aboutsummaryrefslogtreecommitdiff
path: root/build2/variable.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-07-28 07:17:29 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-07-28 13:53:22 +0200
commitb11aaa16d404ce7dc55de6b7338dccbf053a72bd (patch)
treebe5a63a170f9de7318e91d79c4784badb8a4488f /build2/variable.ixx
parentad7d4bd0722aa70ba634900cebf93a1b1814fed9 (diff)
Adjust to new path implementation, use to support reversibility
Diffstat (limited to 'build2/variable.ixx')
-rw-r--r--build2/variable.ixx11
1 files changed, 6 insertions, 5 deletions
diff --git a/build2/variable.ixx b/build2/variable.ixx
index 6b59c72..4b699a6 100644
--- a/build2/variable.ixx
+++ b/build2/variable.ixx
@@ -189,7 +189,7 @@ namespace build2
typify (v, t, &var);
}
- inline names_view
+ inline vector_view<const name>
reverse (const value& v, names& storage)
{
assert (v &&
@@ -463,10 +463,11 @@ namespace build2
inline void value_traits<name>::
assign (value& v, name&& x)
{
- if (v)
- v.as<name> () = move (x);
- else
- new (&v.data_) name (move (x));
+ name* p (v
+ ? &(v.as<name> () = move (x))
+ : new (&v.data_) name (move (x)));
+
+ p->original = false;
}
inline int value_traits<name>::