//===----------------------------------------------------------------------===// // // 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 // bool // operator==(const tuple& t, const tuple& u); // UNSUPPORTED: c++98, c++03 #include #include #include int main() { { typedef std::tuple<> T1; typedef std::tuple<> T2; const T1 t1; const T2 t2; assert(t1 == t2); assert(!(t1 != t2)); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1); const T2 t2(1.1); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1); const T2 t2(1); assert(t1 == t2); assert(!(t1 != t2)); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2); const T2 t2(1, char(2)); assert(t1 == t2); assert(!(t1 != t2)); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2); const T2 t2(1, char(3)); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2); const T2 t2(1.1, char(2)); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2); const T2 t2(1.1, char(3)); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1, 2, 3); assert(t1 == t2); assert(!(t1 != t2)); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1.1, 2, 3); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1, 3, 3); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1, 2, 4); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1, 3, 2); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1.1, 2, 2); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1.1, 3, 3); assert(!(t1 == t2)); assert(t1 != t2); } { typedef std::tuple T1; typedef std::tuple T2; const T1 t1(1, 2, 3); const T2 t2(1.1, 3, 2); assert(!(t1 == t2)); assert(t1 != t2); } #if _LIBCPP_STD_VER > 11 { typedef std::tuple T1; typedef std::tuple T2; constexpr T1 t1(1, 2, 3); constexpr T2 t2(1.1, 3, 2); static_assert(!(t1 == t2), ""); static_assert(t1 != t2, ""); } #endif }