[Mlir-commits] [mlir] e90a0d6 - [mlir] Add a FailureOr copy constructor from a FailureOr of a convertible type.

River Riddle llvmlistbot at llvm.org
Tue Jul 27 13:45:30 PDT 2021


Author: River Riddle
Date: 2021-07-27T20:45:10Z
New Revision: e90a0d6381911fba87ae55fc1e6f877a3f3890d9

URL: https://github.com/llvm/llvm-project/commit/e90a0d6381911fba87ae55fc1e6f877a3f3890d9
DIFF: https://github.com/llvm/llvm-project/commit/e90a0d6381911fba87ae55fc1e6f877a3f3890d9.diff

LOG: [mlir] Add a FailureOr copy constructor from a FailureOr of a convertible type.

Added: 
    

Modified: 
    mlir/include/mlir/Support/LogicalResult.h

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Support/LogicalResult.h b/mlir/include/mlir/Support/LogicalResult.h
index a38de7a901eac..cb5174e88b9f3 100644
--- a/mlir/include/mlir/Support/LogicalResult.h
+++ b/mlir/include/mlir/Support/LogicalResult.h
@@ -85,6 +85,10 @@ template <typename T> class LLVM_NODISCARD FailureOr : public Optional<T> {
   FailureOr() : FailureOr(failure()) {}
   FailureOr(T &&y) : Optional<T>(std::forward<T>(y)) {}
   FailureOr(const T &y) : Optional<T>(y) {}
+  template <typename U,
+            std::enable_if_t<std::is_constructible<T, U>::value> * = nullptr>
+  FailureOr(const FailureOr<U> &other)
+      : Optional<T>(failed(other) ? Optional<T>() : Optional<T>(*other)) {}
 
   operator LogicalResult() const { return success(this->hasValue()); }
 


        


More information about the Mlir-commits mailing list