//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // template struct pair // pair(pair const&) = default; // pair(pair&&) = default; #include #include #include "test_macros.h" struct Dummy { Dummy(Dummy const&) = delete; Dummy(Dummy &&) = default; }; int main(int, char**) { typedef std::pair P; { static_assert(std::is_copy_constructible

::value, ""); #if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) static_assert(std::is_trivially_copy_constructible

::value, ""); #endif } #if TEST_STD_VER >= 11 { static_assert(std::is_move_constructible

::value, ""); #if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) static_assert(std::is_trivially_move_constructible

::value, ""); #endif } { using P1 = std::pair; static_assert(!std::is_copy_constructible::value, ""); static_assert(!std::is_trivially_copy_constructible::value, ""); static_assert(std::is_move_constructible::value, ""); #if !defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) static_assert(std::is_trivially_move_constructible::value, ""); #endif } #endif return 0; }