]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
1 // { dg-do compile { target c++17 } }
3 // Copyright (C) 2017-2024 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3. If not see
18 // <http://www.gnu.org/licenses/>.
22 template<typename T
, typename U
> struct require_same
;
23 template<typename T
> struct require_same
<T
, T
> { using type
= void; };
25 template<typename T
, typename U
>
26 typename require_same
<T
, U
>::type
33 MoveOnly
& operator=(MoveOnly
&&);
40 check_type
<std::pair
<int, unsigned>>(x
);
43 check_type
<std::pair
<int, unsigned>>(x2
);
46 check_type
<std::pair
<int, int>>(x3
);
48 check_type
<std::pair
<int, std::pair
<int, unsigned>>>(x4
);
49 std::pair mo
{MoveOnly(), 2l};
50 check_type
<std::pair
<MoveOnly
, long>>(mo
);
51 mo
= {MoveOnly(), 3l};
54 check_type
<decltype(x
)>(copy
);
56 check_type
<decltype(x
)>(copy2
);
57 std::pair move
= std::move(mo
);
58 check_type
<decltype(mo
)>(move
);