Implement P0777: Treating unnecessay decay
llvm-svn: 324398
diff --git a/libcxx/include/optional b/libcxx/include/optional
index 88fd6b5..1f8e491 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -612,8 +612,8 @@
};
template <class _Up>
using _CheckOptionalArgsCtor = conditional_t<
- !is_same_v<decay_t<_Up>, in_place_t> &&
- !is_same_v<decay_t<_Up>, optional>,
+ !is_same_v<__uncvref_t<_Up>, in_place_t> &&
+ !is_same_v<__uncvref_t<_Up>, optional>,
_CheckOptionalArgsConstructor,
__check_tuple_constructor_fail
>;
@@ -761,7 +761,7 @@
class = enable_if_t
<__lazy_and<
integral_constant<bool,
- !is_same_v<decay_t<_Up>, optional> &&
+ !is_same_v<__uncvref_t<_Up>, optional> &&
!(is_same_v<_Up, value_type> && is_scalar_v<value_type>)
>,
is_constructible<value_type, _Up>,