| 872 | !std::is_convertible<U &&, T>::value /*=> explicit */ |
| 873 | )> |
| 874 | explicit optional(optional<U> &&other) : has_value_(other.has_value()) { |
| 875 | if (other.has_value()) { |
| 876 | contained.construct_value(T{std::move(other.contained.value())}); |
| 877 | } |
| 878 | } |
| 879 | |
| 880 | // 5a (C++11) - non-explicit converting move-construct from optional |
| 881 | template <typename U optional_REQUIRES_T(std::is_constructible<T, U &&>::value && |