This caused problems because: optional<T> o = 0; always worked. But often it would create an uninitialized optional.