Lines Matching refs:_Up
418 template <class _Up>
420 using _RawUp = typename remove_reference<_Up>::type;
425 (is_lvalue_reference<_Up>::value && is_convertible<_UpPtr, _TpPtr>::value)
430 || (is_rvalue_reference<_Tp>::value && !is_lvalue_reference<_Up>::value &&
666 // LWG2756: conditionally explicit conversion from _Up
668 template <class _Up>
670 return is_constructible_v<_Tp, _Up&&> &&
671 is_convertible_v<_Up&&, _Tp>;
674 template <class _Up>
676 return is_constructible_v<_Tp, _Up&&> &&
677 !is_convertible_v<_Up&&, _Tp>;
680 template <class _Up>
682 _IsNotSame<__uncvref_t<_Up>, in_place_t>::value &&
683 _IsNotSame<__uncvref_t<_Up>, optional>::value,
689 template <class _Up, class _Opt = optional<_Up>>
700 template <class _Up, class _Opt = optional<_Up>>
707 template <class _Up, class _QUp = _QualUp>
710 !__check_constructible_from_opt<_Up>::value;
712 template <class _Up, class _QUp = _QualUp>
715 !__check_constructible_from_opt<_Up>::value;
717 template <class _Up, class _QUp = _QualUp>
721 return !__check_constructible_from_opt<_Up>::value &&
722 !__check_assignable_from_opt<_Up>::value;
726 template <class _Up, class _QualUp>
729 _IsNotSame<_Up, _Tp>,
735 template <class _Up, class _QualUp>
738 _IsNotSame<_Up, _Tp>,
764 template <class _Up, class... _Args, class = enable_if_t<
765 is_constructible_v<value_type, initializer_list<_Up>&, _Args...>>
768 constexpr explicit optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args)
771 template <class _Up = value_type, enable_if_t<
772 _CheckOptionalArgsCtor<_Up>::template __enable_implicit<_Up>()
775 constexpr optional(_Up&& __v)
776 : __base(in_place, _VSTD::forward<_Up>(__v)) {}
778 template <class _Up, enable_if_t<
779 _CheckOptionalArgsCtor<_Up>::template __enable_explicit<_Up>()
782 constexpr explicit optional(_Up&& __v)
783 : __base(in_place, _VSTD::forward<_Up>(__v)) {}
785 // LWG2756: conditionally explicit conversion from const optional<_Up>&
786 template <class _Up, enable_if_t<
787 _CheckOptionalLikeCtor<_Up, _Up const&>::template __enable_implicit<_Up>()
790 _LIBCPP_CONSTEXPR_AFTER_CXX17 optional(const optional<_Up>& __v)
794 template <class _Up, enable_if_t<
795 _CheckOptionalLikeCtor<_Up, _Up const&>::template __enable_explicit<_Up>()
798 _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit optional(const optional<_Up>& __v)
803 // LWG2756: conditionally explicit conversion from optional<_Up>&&
804 template <class _Up, enable_if_t<
805 _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_implicit<_Up>()
808 _LIBCPP_CONSTEXPR_AFTER_CXX17 optional(optional<_Up>&& __v)
812 template <class _Up, enable_if_t<
813 _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_explicit<_Up>()
816 _LIBCPP_CONSTEXPR_AFTER_CXX17 explicit optional(optional<_Up>&& __v)
840 template <class _Up = value_type,
843 _IsNotSame<__uncvref_t<_Up>, optional>,
845 _IsNotSame<__uncvref_t<_Up>, value_type>,
848 is_constructible<value_type, _Up>,
849 is_assignable<value_type&, _Up>
854 operator=(_Up&& __v)
857 this->__get() = _VSTD::forward<_Up>(__v);
859 this->__construct(_VSTD::forward<_Up>(__v));
864 template <class _Up, enable_if_t<
865 _CheckOptionalLikeAssign<_Up, _Up const&>::template __enable_assign<_Up>()
869 operator=(const optional<_Up>& __v)
876 template <class _Up, enable_if_t<
877 _CheckOptionalLikeCtor<_Up, _Up &&>::template __enable_assign<_Up>()
881 operator=(optional<_Up>&& __v)
902 template <class _Up, class... _Args,
905 is_constructible_v<value_type, initializer_list<_Up>&, _Args...>
910 emplace(initializer_list<_Up> __il, _Args&&... __args)
1039 template <class _Up>
1041 constexpr value_type value_or(_Up&& __v) const&
1045 static_assert(is_convertible_v<_Up, value_type>,
1048 static_cast<value_type>(_VSTD::forward<_Up>(__v));
1051 template <class _Up>
1053 constexpr value_type value_or(_Up&& __v) &&
1057 static_assert(is_convertible_v<_Up, value_type>,
1060 static_cast<value_type>(_VSTD::forward<_Up>(__v));
1067 using _Up = invoke_result_t<_Func, value_type&>;
1068 static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
1072 return remove_cvref_t<_Up>();
1078 using _Up = invoke_result_t<_Func, const value_type&>;
1079 static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
1083 return remove_cvref_t<_Up>();
1089 using _Up = invoke_result_t<_Func, value_type&&>;
1090 static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
1094 return remove_cvref_t<_Up>();
1100 using _Up = invoke_result_t<_Func, const value_type&&>;
1101 static_assert(__is_std_optional<remove_cvref_t<_Up>>::value,
1105 return remove_cvref_t<_Up>();
1111 using _Up = remove_cv_t<invoke_result_t<_Func, value_type&>>;
1112 static_assert(!is_array_v<_Up>, "Result of f(value()) should not be an Array");
1113 static_assert(!is_same_v<_Up, in_place_t>,
1115 static_assert(!is_same_v<_Up, nullopt_t>,
1117 static_assert(is_object_v<_Up>, "Result of f(value()) should be an object type");
1119 … return optional<_Up>(__optional_construct_from_invoke_tag{}, _VSTD::forward<_Func>(__f), value());
1120 return optional<_Up>();
1126 using _Up = remove_cv_t<invoke_result_t<_Func, const value_type&>>;
1127 static_assert(!is_array_v<_Up>, "Result of f(value()) should not be an Array");
1128 static_assert(!is_same_v<_Up, in_place_t>,
1130 static_assert(!is_same_v<_Up, nullopt_t>,
1132 static_assert(is_object_v<_Up>, "Result of f(value()) should be an object type");
1134 … return optional<_Up>(__optional_construct_from_invoke_tag{}, _VSTD::forward<_Func>(__f), value());
1135 return optional<_Up>();
1141 using _Up = remove_cv_t<invoke_result_t<_Func, value_type&&>>;
1142 static_assert(!is_array_v<_Up>, "Result of f(std::move(value())) should not be an Array");
1143 static_assert(!is_same_v<_Up, in_place_t>,
1145 static_assert(!is_same_v<_Up, nullopt_t>,
1147 static_assert(is_object_v<_Up>, "Result of f(std::move(value())) should be an object type");
1149 …return optional<_Up>(__optional_construct_from_invoke_tag{}, _VSTD::forward<_Func>(__f), _VSTD::mo…
1150 return optional<_Up>();
1156 using _Up = remove_cvref_t<invoke_result_t<_Func, const value_type&&>>;
1157 static_assert(!is_array_v<_Up>, "Result of f(std::move(value())) should not be an Array");
1158 static_assert(!is_same_v<_Up, in_place_t>,
1160 static_assert(!is_same_v<_Up, nullopt_t>,
1162 static_assert(is_object_v<_Up>, "Result of f(std::move(value())) should be an object type");
1164 …return optional<_Up>(__optional_construct_from_invoke_tag{}, _VSTD::forward<_Func>(__f), _VSTD::mo…
1165 return optional<_Up>();
1198 template <class _Tp, class _Up>
1202 declval<const _Up&>()), bool>,
1205 operator==(const optional<_Tp>& __x, const optional<_Up>& __y)
1214 template <class _Tp, class _Up>
1218 declval<const _Up&>()), bool>,
1221 operator!=(const optional<_Tp>& __x, const optional<_Up>& __y)
1230 template <class _Tp, class _Up>
1234 declval<const _Up&>()), bool>,
1237 operator<(const optional<_Tp>& __x, const optional<_Up>& __y)
1246 template <class _Tp, class _Up>
1250 declval<const _Up&>()), bool>,
1253 operator>(const optional<_Tp>& __x, const optional<_Up>& __y)
1262 template <class _Tp, class _Up>
1266 declval<const _Up&>()), bool>,
1269 operator<=(const optional<_Tp>& __x, const optional<_Up>& __y)
1278 template <class _Tp, class _Up>
1282 declval<const _Up&>()), bool>,
1285 operator>=(const optional<_Tp>& __x, const optional<_Up>& __y)
1392 template <class _Tp, class _Up>
1396 declval<const _Up&>()), bool>,
1399 operator==(const optional<_Tp>& __x, const _Up& __v)
1404 template <class _Tp, class _Up>
1408 declval<const _Up&>()), bool>,
1411 operator==(const _Tp& __v, const optional<_Up>& __x)
1416 template <class _Tp, class _Up>
1420 declval<const _Up&>()), bool>,
1423 operator!=(const optional<_Tp>& __x, const _Up& __v)
1428 template <class _Tp, class _Up>
1432 declval<const _Up&>()), bool>,
1435 operator!=(const _Tp& __v, const optional<_Up>& __x)
1440 template <class _Tp, class _Up>
1444 declval<const _Up&>()), bool>,
1447 operator<(const optional<_Tp>& __x, const _Up& __v)
1452 template <class _Tp, class _Up>
1456 declval<const _Up&>()), bool>,
1459 operator<(const _Tp& __v, const optional<_Up>& __x)
1464 template <class _Tp, class _Up>
1468 declval<const _Up&>()), bool>,
1471 operator<=(const optional<_Tp>& __x, const _Up& __v)
1476 template <class _Tp, class _Up>
1480 declval<const _Up&>()), bool>,
1483 operator<=(const _Tp& __v, const optional<_Up>& __x)
1488 template <class _Tp, class _Up>
1492 declval<const _Up&>()), bool>,
1495 operator>(const optional<_Tp>& __x, const _Up& __v)
1500 template <class _Tp, class _Up>
1504 declval<const _Up&>()), bool>,
1507 operator>(const _Tp& __v, const optional<_Up>& __x)
1512 template <class _Tp, class _Up>
1516 declval<const _Up&>()), bool>,
1519 operator>=(const optional<_Tp>& __x, const _Up& __v)
1524 template <class _Tp, class _Up>
1528 declval<const _Up&>()), bool>,
1531 operator>=(const _Tp& __v, const optional<_Up>& __x)
1562 template <class _Tp, class _Up, class... _Args>
1564 optional<_Tp> make_optional(initializer_list<_Up> __il, _Args&&... __args)