]>
Commit | Line | Data |
---|---|---|
52066eae | 1 | // { dg-do run { target c++11 } } |
bafa9791 PC |
2 | |
3 | // 2010-09-22 Paolo Carlini <paolo.carlini@oracle.com> | |
4 | // | |
818ab71a | 5 | // Copyright (C) 2010-2016 Free Software Foundation, Inc. |
bafa9791 PC |
6 | // |
7 | // This file is part of the GNU ISO C++ Library. This library is free | |
8 | // software; you can redistribute it and/or modify it under the | |
9 | // terms of the GNU General Public License as published by the | |
10 | // Free Software Foundation; either version 3, or (at your option) | |
11 | // any later version. | |
12 | ||
13 | // This library is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | ||
18 | // You should have received a copy of the GNU General Public License along | |
19 | // with this library; see the file COPYING3. If not see | |
20 | // <http://www.gnu.org/licenses/>. | |
21 | ||
22 | #include <typeindex> | |
23 | #include <testsuite_hooks.h> | |
24 | ||
25 | #define TEST3(TI1, TI2, TO1, TO2) \ | |
26 | VERIFY( (TI1 == TI2) == (TO1 == TO2) ); \ | |
27 | VERIFY( (TI1 != TI2) == (TO1 != TO2) ); \ | |
28 | VERIFY( (TI1 < TI2) == (TO1.before(TO2)) ); \ | |
29 | VERIFY( (TI1 <= TI2) == (!TO2.before(TO1)) ); \ | |
30 | VERIFY( (TI1 > TI2) == (TO2.before(TO1)) ); \ | |
31 | VERIFY( (TI1 >= TI2) == (!TO1.before(TO2)) ); | |
32 | ||
33 | #define TEST2(TI, TO) \ | |
34 | TEST3(TI, ti1, TO, to1) \ | |
35 | TEST3(TI, ti2, TO, to2) \ | |
36 | TEST3(TI, ti3, TO, to3) \ | |
37 | TEST3(TI, ti4, TO, to4) \ | |
38 | TEST3(TI, ti5, TO, to5) \ | |
39 | TEST3(TI, ti6, TO, to6) \ | |
40 | TEST3(TI, ti7, TO, to7) | |
41 | ||
42 | #define TEST \ | |
43 | TEST2(ti1, to1) \ | |
44 | TEST2(ti2, to2) \ | |
45 | TEST2(ti3, to3) \ | |
46 | TEST2(ti4, to4) \ | |
47 | TEST2(ti5, to5) \ | |
48 | TEST2(ti6, to6) \ | |
49 | TEST2(ti7, to7) | |
50 | ||
51 | void test01() | |
52 | { | |
53 | bool test __attribute__((unused)) = true; | |
54 | using namespace std; | |
55 | ||
56 | class Abraca { }; | |
57 | Abraca a1, a2_; | |
58 | const Abraca a2 = a2_; | |
59 | ||
60 | const type_info& to1 = typeid(int); | |
61 | const type_index ti1(to1); | |
62 | ||
63 | const type_info& to2 = typeid(double); | |
64 | const type_index ti2(to2); | |
65 | ||
66 | const type_info& to3 = typeid(Abraca); | |
67 | const type_index ti3(to3); | |
68 | ||
69 | const type_info& to4 = typeid(const Abraca); | |
70 | const type_index ti4(to4); | |
71 | ||
72 | const type_info& to5 = typeid(const Abraca&); | |
73 | const type_index ti5(to5); | |
74 | ||
75 | const type_info& to6 = typeid(a1); | |
76 | const type_index ti6(to6); | |
77 | ||
78 | const type_info& to7 = typeid(a2); | |
79 | const type_index ti7(to7); | |
80 | ||
81 | TEST | |
82 | } | |
83 | ||
84 | int main() | |
85 | { | |
86 | test01(); | |
87 | return 0; | |
88 | } |