|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
diff -up chromium-65.0.3325.146/base/optional.h.converting chromium-65.0.3325.146/base/optional.h
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
--- chromium-65.0.3325.146/base/optional.h.converting 2018-03-13 22:31:05.248797490 -0400
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+++ chromium-65.0.3325.146/base/optional.h 2018-03-13 22:33:10.826368771 -0400
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
@@ -31,6 +31,10 @@ constexpr in_place_t in_place = {};
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
// http://en.cppreference.com/w/cpp/utility/optional/nullopt
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
constexpr nullopt_t nullopt(0);
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+// Forward declaration, which is refered by following helpers.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+template <typename T>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+class Optional;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
namespace internal {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
template <typename T, bool = std::is_trivially_destructible<T>::value>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
@@ -220,6 +224,19 @@ class OptionalBase {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
constexpr explicit OptionalBase(in_place_t, Args&&... args)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
: storage_(in_place, std::forward<Args>(args)...) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // Implementation of converting constructors.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <typename U>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ explicit OptionalBase(const OptionalBase<U>& other) {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ if (other.storage_.is_populated_)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ storage_.Init(other.storage_.value_);
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <typename U>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ explicit OptionalBase(OptionalBase<U>&& other) {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ if (other.storage_.is_populated_)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ storage_.Init(std::move(other.storage_.value_));
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
~OptionalBase() = default;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
OptionalBase& operator=(const OptionalBase& other) {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
@@ -263,6 +280,11 @@ class OptionalBase {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
storage_.is_populated_ = false;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // For implementing conversion, allow access to other typed OptionalBase
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // class.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <typename U>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ friend class OptionalBase;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
OptionalStorage<T> storage_;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
};
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
@@ -318,6 +340,20 @@ struct MoveAssignable<false> {
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
MoveAssignable& operator=(MoveAssignable&&) = delete;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
};
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+// Helper to conditionally enable converting constructors.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+template <typename T, typename U>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+struct IsConvertibleFromOptional
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ : std::integral_constant<
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ bool,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_constructible<T, Optional<U>&>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_constructible<T, const Optional<U>&>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_constructible<T, Optional<U>&&>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_constructible<T, const Optional<U>&&>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<Optional<U>&, T>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<const Optional<U>&, T>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<Optional<U>&&, T>::value ||
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<const Optional<U>&&, T>::value> {};
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
} // namespace internal
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
// base::Optional is a Chromium version of the C++17 optional class:
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
@@ -348,7 +384,47 @@ class Optional
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
constexpr Optional(const Optional& other) = default;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
constexpr Optional(Optional&& other) = default;
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
- constexpr Optional(nullopt_t) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ constexpr Optional(nullopt_t) {} // NOLINT(runtime/explicit)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // Converting copy constructor. "explicit" only if
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // std::is_convertible<const U&, T>::value is false. It is implemented by
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // declaring two almost same constructors, but that condition in enable_if_t
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // is different, so that either one is chosen, thanks to SFINAE.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ typename U,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::enable_if_t<std::is_constructible<T, const U&>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !internal::IsConvertibleFromOptional<T, U>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<const U&, T>::value,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ bool> = false>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ Optional(const Optional<U>& other) : internal::OptionalBase<T>(other) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ typename U,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::enable_if_t<std::is_constructible<T, const U&>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !internal::IsConvertibleFromOptional<T, U>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !std::is_convertible<const U&, T>::value,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ bool> = false>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ explicit Optional(const Optional<U>& other)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ : internal::OptionalBase<T>(other) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // Converting move constructor. Similar to converting copy constructor,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ // declaring two (explicit and non-explicit) constructors.
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ typename U,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::enable_if_t<std::is_constructible<T, U&&>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !internal::IsConvertibleFromOptional<T, U>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::is_convertible<U&&, T>::value,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ bool> = false>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ Optional(Optional<U>&& other) : internal::OptionalBase<T>(std::move(other)) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ template <
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ typename U,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ std::enable_if_t<std::is_constructible<T, U&&>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !internal::IsConvertibleFromOptional<T, U>::value &&
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ !std::is_convertible<U&&, T>::value,
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ bool> = false>
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ explicit Optional(Optional<U>&& other)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
+ : internal::OptionalBase<T>(std::move(other)) {}
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
constexpr Optional(const T& value)
|
|
![](https://seccdn.libravatar.org/avatar/6bc20550c752ba849c045db39b646a1cf4359ecaade6d9cca60b8421d81bd73e?s=16&d=retro) |
4e6c6ef |
: internal::OptionalBase<T>(in_place, value) {}
|