2 // { dg-options "-std=gnu++0x" }
4 // 2011-05-20 Paolo Carlini <paolo.carlini@oracle.com>
6 // Copyright (C) 2011-2013 Free Software Foundation, Inc.
8 // This file is part of the GNU ISO C++ Library. This library is free
9 // software; you can redistribute it and/or modify it under the
10 // terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 3, or (at your option)
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License along
20 // with this library; see the file COPYING3. If not see
21 // <http://www.gnu.org/licenses/>.
24 #include <testsuite_tr1.h>
26 using namespace __gnu_test;
28 typedef std::pair<int, int> tt1;
29 typedef std::pair<int, double> tt2;
30 typedef std::pair<short, NoexceptMoveAssignClass> tt4;
31 typedef std::pair<ExceptMoveAssignClass, double> tt6;
32 typedef std::pair<int, ExceptMoveConsClass> tt9;
33 typedef std::pair<ExceptMoveAssignClass, short> tt10;
34 typedef std::pair<short, NoexceptMoveConsClass> tt11;
35 typedef std::pair<NoexceptMoveConsClass,
36 NoexceptMoveConsClass> tt12;
37 typedef std::pair<NoexceptMoveConsNoexceptMoveAssignClass,
38 NoexceptMoveConsNoexceptMoveAssignClass> tt13;
39 typedef std::pair<ExceptMoveConsNoexceptMoveAssignClass,
40 ExceptMoveConsNoexceptMoveAssignClass> tt14;
41 typedef std::pair<NoexceptMoveConsExceptMoveAssignClass,
42 NoexceptMoveConsExceptMoveAssignClass> tt15;
43 typedef std::pair<ExceptMoveConsExceptMoveAssignClass,
44 ExceptMoveConsExceptMoveAssignClass> tt16;
45 typedef std::pair<NoexceptMoveConsNoexceptMoveAssignClass,
47 typedef std::pair<NoexceptMoveConsNoexceptMoveAssignClass,
48 NoexceptMoveConsNoexceptMoveAssignClass> tt19;
49 typedef std::pair<NoexceptMoveConsNoexceptMoveAssignClass,
50 ExceptMoveConsNoexceptMoveAssignClass> tt21;
52 static_assert(noexcept(std::declval<tt1&>().swap(std::declval<tt1&>())),
54 static_assert(noexcept(std::declval<tt2&>().swap(std::declval<tt2&>())),
56 static_assert(noexcept(std::declval<tt4&>().swap(std::declval<tt4&>())),
58 static_assert(!noexcept(std::declval<tt6&>().swap(std::declval<tt6&>())),
60 static_assert(!noexcept(std::declval<tt9&>().swap(std::declval<tt9&>())),
62 static_assert(!noexcept(std::declval<tt10&>().swap(std::declval<tt10&>())),
64 static_assert(noexcept(std::declval<tt11&>().swap(std::declval<tt11&>())),
66 static_assert(noexcept(std::declval<tt12&>().swap(std::declval<tt12&>())),
68 static_assert(noexcept(std::declval<tt13&>().swap(std::declval<tt13&>())),
70 static_assert(!noexcept(std::declval<tt14&>().swap(std::declval<tt14&>())),
72 static_assert(!noexcept(std::declval<tt15&>().swap(std::declval<tt15&>())),
74 static_assert(!noexcept(std::declval<tt16&>().swap(std::declval<tt16&>())),
76 static_assert(noexcept(std::declval<tt17&>().swap(std::declval<tt17&>())),
78 static_assert(noexcept(std::declval<tt19&>().swap(std::declval<tt19&>())),
80 static_assert(!noexcept(std::declval<tt21&>().swap(std::declval<tt21&>())),