Accidentally disallowed explicit tuple conversions when all elements of the tuple can be explicitly converted.

llvm-svn: 179467
This commit is contained in:
Howard Hinnant 2013-04-14 00:01:13 +00:00
parent 9594f4c818
commit f3b02b17af
2 changed files with 10 additions and 1 deletions

View File

@ -477,7 +477,7 @@ struct __tuple_impl<__tuple_indices<_Indx...>, _Tp...>
template <class _Tuple,
class = typename enable_if
<
__tuple_convertible<_Tuple, tuple<_Tp...> >::value
__tuple_constructible<_Tuple, tuple<_Tp...> >::value
>::type
>
_LIBCPP_INLINE_VISIBILITY

View File

@ -67,4 +67,13 @@ int main()
assert(std::get<1>(t1) == int('a'));
assert(std::get<2>(t1).id_ == 2);
}
{
typedef std::tuple<double, char, int> T0;
typedef std::tuple<int, int, B> T1;
T0 t0(2.5, 'a', 3);
T1 t1(t0);
assert(std::get<0>(t1) == 2);
assert(std::get<1>(t1) == int('a'));
assert(std::get<2>(t1).id_ == 3);
}
}