ldionne added a comment.

I think we should be pretty much good to go now. Will let CI run just in case.



================
Comment at: libcxx/include/tuple:971
+        _VSTD::get<0>(*this) = _VSTD::forward<_Up1>(__pair.first);
+        _VSTD::get<1>(*this) = _VSTD::forward<_Up2>(__pair.second);
+        return *this;
----------------
Quuxplusone wrote:
> Oh, late-breaking nit: I would prefer to see `... = 
> static_cast<_Up1&&>(__pair.first);` here, because `_Up1` is not being deduced 
> according to forwarding-reference rules, and thus shouldn't be "forwarded."  
> Pragmatically I think `forward<_Up1>` ends up doing the right thing in all 
> cases... but I don't think it's appropriate here. (Plus, we save one function 
> template instantiation by omitting it!)
It actually occurs to me that we should really be using 
`_VSTD::move(__pair.first)` since we're taking a rvalue reference to the pair 
as an argument. I'll change it to that, please LMK if you disagree.


================
Comment at: libcxx/include/tuple:975
+
+    // EXTENSION
+    template<class _Up, size_t _Np, class = _EnableIf<
----------------
Quuxplusone wrote:
> Perhaps in a followup patch: could we delineate exactly what code is part of 
> this extension and put it all under an `#if _LIBCPP_TUPLE_ARRAY_ASSIGNMENT` 
> or something, such that we could say "this is the exact extent of the 
> extension code" and maybe even get customers to try compiling with 
> `-D_LIBCPP_TUPLE_ARRAY_ASSIGNMENT=0` to see what breaks?
> 
> I'm assuming that our goal here is to deprecate and remove this extension 
> over time. But even if we support it forever, I think `#if` would be nicer 
> than the `//EXTENSION` comments.
The goal is to remove the extension shortly after.


================
Comment at: libcxx/include/tuple:992
+    // EXTENSION
+    template<class _Up, size_t _Np, class = void, class = _EnableIf<
+        _And<
----------------
Quuxplusone wrote:
> Nitpick: Sent you a Slack suggesting how to eliminate this `class = void`.
Replied there. The short story is that I used `class = void` to workaround the 
GCC segfaults I was seeing on the bots.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D50106/new/

https://reviews.llvm.org/D50106

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to