diff --git a/ostd/maybe.hh b/ostd/maybe.hh index 9235e82..47ed4de 100644 --- a/ostd/maybe.hh +++ b/ostd/maybe.hh @@ -51,7 +51,8 @@ namespace detail { constexpr MaybeStorage(Value const &v): p_value(v), p_engaged(true) {} constexpr MaybeStorage(Value &&v): p_value(move(v)), p_engaged(true) {} - template constexpr MaybeStorage(InPlace, A &&...args): + template + constexpr MaybeStorage(InPlace, A &&...args): p_value(forward(args)...), p_engaged(true) {} @@ -468,6 +469,16 @@ inline constexpr Maybe> make_maybe(T &&v) { return Maybe>(forward(v)); } +template +inline constexpr Maybe make_maybe(A &&...args) { + return Maybe(InPlace, forward(args)...); +} + +template +inline constexpr Maybe make_maybe(std::initializer_list il, A &&...args) { + return Maybe(InPlace, il, forward(args)...); +} + } /* namespace ostd */ #endif