summaryrefslogtreecommitdiffstats
path: root/libcxx/include/tuple
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-07-01 04:07:39 +0000
committerEric Fiselier <eric@efcs.ca>2016-07-01 04:07:39 +0000
commite2fd8b8db95cea730e9ab277c0e05f4ecfd59d09 (patch)
treed3084e6b34e463b59d06d2ab65c877fdddfa6b25 /libcxx/include/tuple
parent10b9a1bb422639cf47d4aaf13a38b74e68101bef (diff)
downloadbcm5719-llvm-e2fd8b8db95cea730e9ab277c0e05f4ecfd59d09.tar.gz
bcm5719-llvm-e2fd8b8db95cea730e9ab277c0e05f4ecfd59d09.zip
Flatten tuple_constructible, tuple_convertible and tuple_assignable.
This patch is the last in a series that replaces recursive meta-programming in std::tuple with non-recursive implementations. Previously std::tuple could only be instantiated with 126 elements before it blew the max template instantiation depth. Now the size of std::tuple is essentially unbounded (I've tested with over 5000 elements). One unfortunate side-effect of this change is that tuple_constructible and similar no longer short circuit after the first failure. Instead they evaluate the conditions for all elements. This could be potentially breaking. I plan to look into this further. llvm-svn: 274331
Diffstat (limited to 'libcxx/include/tuple')
-rw-r--r--libcxx/include/tuple5
1 files changed, 0 insertions, 5 deletions
diff --git a/libcxx/include/tuple b/libcxx/include/tuple
index c7df34aef52..4c9ae42462e 100644
--- a/libcxx/include/tuple
+++ b/libcxx/include/tuple
@@ -379,11 +379,6 @@ template <class ..._Tp>
_LIBCPP_INLINE_VISIBILITY
void __swallow(_Tp&&...) _NOEXCEPT {}
-template <bool ..._Pred>
-struct __all
- : is_same<__all<_Pred...>, __all<(_Pred, true)...>>
-{ };
-
template <class ..._Tp>
struct __lazy_all : __all<_Tp::value...> {};
OpenPOWER on IntegriCloud