[libcxx-commits] [PATCH] D96523: [libc++] Rewrite the tuple constructors to be strictly Standards conforming
Zoe Carver via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Feb 11 11:05:14 PST 2021
zoecarver added inline comments.
================
Comment at: libcxx/include/tuple:585
+ _BoolConstant<sizeof...(_Tp) >= 1>,
+ _Not<_IsThisTuple<_Up...> >, // extension to allow mis-behaved user constructors
+ is_constructible<_Tp, _Up>...
----------------
Nit: it might be simpler to just say `sizeof...(_Up) != 1 || is_same<_Up, tuple>...` (or even `__is_same(_Up..., tuple)`). Then you could get rid of `_IsThisTuple`.
================
Comment at: libcxx/include/tuple:917
+ _And<_Dep,
+ _Lazy<_EnableMoveFromPair, _Up1, _Up2>,
+ _Not<_Lazy<_And, // explicit check
----------------
If you're using `_Up1` here, do you need the `_Dep` template type param?
================
Comment at: libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_copy.pass.cpp:57
-#ifdef _LIBCPP_VERSION
{
typedef std::tuple<alloc_first, alloc_last> T;
----------------
Is this not an extension? If it is an extension, don't we want to keep this behind a condition so that the test suite is more portable?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96523/new/
https://reviews.llvm.org/D96523
More information about the libcxx-commits
mailing list