maybe enhancements

master
Daniel Kolesa 2016-09-02 18:52:47 +01:00
parent b202cb43ad
commit 59ce413ef3
1 changed files with 12 additions and 1 deletions

View File

@ -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<typename ...A> constexpr MaybeStorage(InPlace, A &&...args):
template<typename ...A>
constexpr MaybeStorage(InPlace, A &&...args):
p_value(forward<A>(args)...), p_engaged(true)
{}
@ -468,6 +469,16 @@ inline constexpr Maybe<Decay<T>> make_maybe(T &&v) {
return Maybe<Decay<T>>(forward<T>(v));
}
template<typename T, typename ...A>
inline constexpr Maybe<T> make_maybe(A &&...args) {
return Maybe<T>(InPlace, forward<A>(args)...);
}
template<typename T, typename U, typename ...A>
inline constexpr Maybe<T> make_maybe(std::initializer_list<U> il, A &&...args) {
return Maybe<T>(InPlace, il, forward<A>(args)...);
}
} /* namespace ostd */
#endif