Index: include/tuple
===================================================================
--- include/tuple
+++ include/tuple
@@ -706,7 +706,7 @@
typename enable_if
<
_CheckArgsConstructor<
- sizeof...(_Up) <= sizeof...(_Tp)
+ sizeof...(_Up) == sizeof...(_Tp)
&& !_PackExpandsToThisTuple<_Up...>::value
>::template __enable_implicit<_Up...>(),
bool
@@ -716,17 +716,17 @@
tuple(_Up&&... __u)
_NOEXCEPT_((
is_nothrow_constructible::type,
- typename __make_tuple_types::type,
- typename __make_tuple_indices::type,
- typename __make_tuple_types::type,
+ typename __make_tuple_indices::type,
+ __tuple_types<_Tp...>,
+ __tuple_indices<>,
+ __tuple_types<>,
_Up...
>::value
))
- : base_(typename __make_tuple_indices::type(),
- typename __make_tuple_types::type(),
- typename __make_tuple_indices::type(),
- typename __make_tuple_types::type(),
+ : base_(typename __make_tuple_indices::type{},
+ __tuple_types<_Tp...>{},
+ __tuple_indices<>{},
+ __tuple_types<>{},
_VSTD::forward<_Up>(__u)...) {}
template ::value
- >::template __enable_explicit<_Up...>(),
+ >::template __enable_explicit<_Up...>() ||
+ _CheckArgsConstructor<
+ sizeof...(_Up) < sizeof...(_Tp)
+ && !_PackExpandsToThisTuple<_Up...>::value
+ >::template __enable_implicit<_Up...>(),
bool
>::type = false
>