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 >