[libcxx-commits] [PATCH] D116621: [libc++][P2321R2] Add const overloads to tuple swap, construction and assignment
Eric Fiselier via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Mar 25 09:25:00 PDT 2022
EricWF added inline comments.
================
Comment at: libcxx/include/tuple:994
struct _EnableImplicitMoveFromPair : _And<
- is_constructible<_FirstType<_DependentTp...>, _Up1>,
- is_constructible<_SecondType<_DependentTp...>, _Up2>,
- is_convertible<_Up1, _FirstType<_DependentTp...> >, // explicit check
- is_convertible<_Up2, _SecondType<_DependentTp...> >
- > { };
+ is_convertible<_Up1, _FirstType<_DependentTp...> >,
+ is_convertible<_Up2, _SecondType<_DependentTp...> >,
----------------
If we don't have 2 types in the tuple, we shouldn't even be attempting this `is_convertible` check on the first one.
Don't instantiate any constructability/convertability checks in tuple if there are obvious reasons why the constructor evaluating them shouldn't be chosen, such as the arity.
================
Comment at: libcxx/include/tuple:1125
_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
tuple& operator=(_If<_And<is_move_assignable<_Tp>...>::value, tuple, __nat>&& __tuple)
_NOEXCEPT_((_And<is_nothrow_move_assignable<_Tp>...>::value))
----------------
Are we implementing this for `std::array` too?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D116621/new/
https://reviews.llvm.org/D116621
More information about the libcxx-commits
mailing list