On 4/20/16 11:43 PM, Gerald Squelart wrote:
How about another generic helper, e.g.:
template <typename T, typename ...Args>
Maybe<T> MakeCheckedMaybe(Args&&... aArgs)
{
nsresult rv;
Maybe<T> m = Some(T(std::forward<Args>(aArgs)..., &rv));
if (NS_SUCCEEDED(rv)) {
return m;
}
return Nothing();
}
Existing classes with Init() member functions could be shoehorned,
unchanged, into this pattern with a MakeUnique() variant that called and
checked Init(). Something like:
MakeUniqueAndInit(Args&&... aArgs)
{
UniquePtr<T> up(new T(Forward<Args>(aArgs)...));
return NS_SUCCEEDED(up.Init()) ? up : UniquePtr<T>();
}
_______________________________________________
dev-platform mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-platform