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 dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform