34#ifndef _RWSTD_NO_EXT_CXX_0X
45 const char* typeT,
const char* typeU,
49 "%s<%s>::type is %{?}exactly%{:}not%{;} %s",
50 trait, typeT, success, typeU);
53#define TEST(Trait,TypeT,TypeU) \
54 test_trait(__LINE__, #Trait, #TypeT, #TypeU, \
55 std::is_same<Trait<TypeT>::type, TypeU>::value)
59static void test_add_pointer ()
61 TEST (std::add_pointer,
int,
int*);
62 TEST (std::add_pointer,
int&,
int*);
64 TEST (std::add_pointer,
int*,
int**);
65 TEST (std::add_pointer,
int const [],
int const (*)[]);
67 TEST (std::add_pointer,
int const *
volatile,
68 int const *
volatile *);
70 TEST (std::add_pointer,
int const *
volatile &,
71 int const *
volatile *);
73 TEST (std::add_pointer,
int (),
int (*)());
74 TEST (std::add_pointer,
int (&)(),
int (*)());
75 TEST (std::add_pointer,
int (*)(),
int (**)());
82static void test_remove_pointer ()
84 TEST (std::remove_pointer,
int*,
int);
85 TEST (std::remove_pointer,
int**,
int*);
86 TEST (std::remove_pointer,
int const (*)[],
int const []);
88 TEST (std::remove_pointer,
int const *
volatile *,
89 int const *
volatile);
91 TEST (std::remove_pointer,
int const *
volatile,
92 int const *
volatile);
94 TEST (std::remove_pointer,
int (),
int ());
95 TEST (std::remove_pointer,
int (*)(),
int ());
96 TEST (std::remove_pointer,
int (**)(),
int (*)());
107 test_remove_pointer ();
121 "test disabled because _RWSTD_NO_EXT_CXX_0X is defined");
129int main (
int argc,
char *argv[])
131 return rw_test (argc, argv, __FILE__,
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
_TEST_EXPORT int rw_test(int argc, char *argv[], const char *filename, const char *clause, const char *comment, int(*testfun)(int, char **), const char *optspec,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_warn(int, const char *, int, const char *,...)