//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template class tuple; // template tuple(const pair& u); #include #include #include int main() { { typedef std::pair T0; typedef std::tuple T1; T0 t0(2.5, 'a'); T1 t1 = t0; assert(std::get<0>(t1) == 2); assert(std::get<1>(t1) == short('a')); } #if _LIBCPP_STD_VER > 11 { typedef std::pair P0; typedef std::tuple T1; constexpr P0 p0(2.5, 'a'); constexpr T1 t1 = p0; static_assert(std::get<0>(t1) != std::get<0>(p0), ""); static_assert(std::get<1>(t1) == std::get<1>(p0), ""); static_assert(std::get<0>(t1) == 2, ""); static_assert(std::get<1>(t1) == short('a'), ""); } #endif }