Provide a "None" value for convenience when using Optional<T>()
[oota-llvm.git] / include / llvm / ADT / Optional.h
index 6c91a13a5b5fb3fda8daca7578a1b58d1db95a85..b0d09f69603e2839dfd07f28d19ce0d6f5f0a417 100644 (file)
@@ -16,6 +16,7 @@
 #ifndef LLVM_ADT_OPTIONAL_H
 #define LLVM_ADT_OPTIONAL_H
 
+#include "llvm/ADT/None.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/AlignOf.h"
 #include <cassert>
@@ -31,6 +32,7 @@ class Optional {
   AlignedCharArrayUnion<T> storage;
   bool hasVal;
 public:
+  Optional(NoneType) : hasVal(false) {}
   explicit Optional() : hasVal(false) {}
   Optional(const T &y) : hasVal(true) {
     new (storage.buffer) T(y);