aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/ext/remove_cv.C
blob: cff7050e2ef22b5540a208c2ad0f43f3ef370961 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// { dg-do compile { target c++11 } }

#define SA(X) static_assert((X),#X)

SA(__is_same(__remove_cv(void), void));
SA(__is_same(__remove_cv(int*), int*));

SA(__is_same(__remove_cv(int&), int&));
SA(__is_same(__remove_cv(const int&), const int&));
SA(__is_same(__remove_cv(volatile int&), volatile int&));
SA(__is_same(__remove_cv(const volatile int&), const volatile int&));

SA(__is_same(__remove_cv(int&&), int&&));
SA(__is_same(__remove_cv(const int&&), const int&&));
SA(__is_same(__remove_cv(volatile int&&), volatile int&&));
SA(__is_same(__remove_cv(const volatile int&&), const volatile int&&));

SA(__is_same(__remove_cv(int[3]), int[3]));
SA(__is_same(__remove_cv(const int[3]), int[3]));
SA(__is_same(__remove_cv(volatile int[3]), int[3]));
SA(__is_same(__remove_cv(const volatile int[3]), int[3]));

SA(__is_same(__remove_cv(int(int)), int(int)));
SA(__is_same(__remove_cv(int(*const)(int)), int(*)(int)));
SA(__is_same(__remove_cv(int(*volatile)(int)), int(*)(int)));
SA(__is_same(__remove_cv(int(*const volatile)(int)), int(*)(int)));

template<class T> using const_non_volatile_t = const __remove_cv(T);
SA(__is_same(const_non_volatile_t<int>, const int));
SA(__is_same(const_non_volatile_t<volatile int>, const int));
SA(__is_same(const_non_volatile_t<int&>, int&));
SA(__is_same(const_non_volatile_t<const int&>, const int&));