forked from OctaForge/libostd
maybe enhancements
parent
b202cb43ad
commit
59ce413ef3
|
@ -51,7 +51,8 @@ namespace detail {
|
||||||
constexpr MaybeStorage(Value const &v): p_value(v), p_engaged(true) {}
|
constexpr MaybeStorage(Value const &v): p_value(v), p_engaged(true) {}
|
||||||
constexpr MaybeStorage(Value &&v): p_value(move(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)
|
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));
|
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 */
|
} /* namespace ostd */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue