Index: webrtc/base/optional.h |
diff --git a/webrtc/base/optional.h b/webrtc/base/optional.h |
index 25cfbfe41752597d340864f3cc46ce56794763b4..e98ab2e3ce7e9765386bcb8cbb47c92f4a7b42fa 100644 |
--- a/webrtc/base/optional.h |
+++ b/webrtc/base/optional.h |
@@ -59,7 +59,7 @@ template <typename T> |
class Optional final { |
public: |
// Construct an empty Optional. |
- Optional() : has_value_(false) {} |
+ Optional() : has_value_(false), empty_('\0') {} |
// Construct an Optional that contains a value. |
explicit Optional(const T& value) : has_value_(true) { |
@@ -189,6 +189,10 @@ class Optional final { |
private: |
bool has_value_; // True iff value_ contains a live value. |
union { |
+ // empty_ exists only to make it possible to initialize the union, even when |
+ // it doesn't contain any data. If the union goes uninitialized, it may |
+ // trigger compiler warnings. |
+ char empty_; |
// By placing value_ in a union, we get to manage its construction and |
// destruction manually: the Optional constructors won't automatically |
// construct it, and the Optional destructor won't automatically destroy |