diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2019-08-23 09:55:28 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2019-08-23 09:55:28 +0200 |
commit | 5badf4672d3c647465e1764006440beb5c5109d8 (patch) | |
tree | 1b8b70100b94c07a0b7208d0ac0dc93361bac10d /libbuild2/action.hxx | |
parent | 421d0a4d1a7786e90407072b378cc060d325907d (diff) |
MSVC fix
Diffstat (limited to 'libbuild2/action.hxx')
-rw-r--r-- | libbuild2/action.hxx | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libbuild2/action.hxx b/libbuild2/action.hxx index 9fa2a16..01c5307 100644 --- a/libbuild2/action.hxx +++ b/libbuild2/action.hxx @@ -116,10 +116,18 @@ namespace build2 template <typename T> struct action_state { - T data[2]; // [0] -- inner, [1] -- outer. + T inner; + T outer; - T& operator[] (action a) {return data[a.inner () ? 0 : 1];} - const T& operator[] (action a) const {return data[a.inner () ? 0 : 1];} + T& operator[] (action a) {return a.inner () ? inner : outer;} + const T& operator[] (action a) const {return a.inner () ? inner : outer;} + + action_state () = default; + + template <typename... A> + explicit + action_state (A&&... a) + : inner (forward<A> (a)...), outer (forward<A> (a)...) {} }; // Id constants for build-in and pre-defined meta/operations. |