//===----------------------------------------------------------------------===// // // 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. // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03 // // template struct pair // pair(pair&&) = default; #include #include #include #include "test_macros.h" struct Dummy { Dummy(Dummy const&) = delete; Dummy(Dummy &&) = default; }; int main() { { typedef std::pair P1; static_assert(std::is_move_constructible::value, ""); P1 p1(3, static_cast(4)); P1 p2 = std::move(p1); assert(p2.first == 3); assert(p2.second == 4); } { using P = std::pair; static_assert(!std::is_copy_constructible

::value, ""); static_assert(std::is_move_constructible

::value, ""); } }