Some static analysis tools incorrectly identify this constructor as leaving _has_value in an undefined state. Explicitly call the default constructor to force _has_value to false.
@@ -140,6 +140,7 @@ optional<T> make_optional(Args&&... args)
template <typename T>
optional<T>::optional(nullopt_t) noexcept
+ : optional()
{
}