34#ifndef _RWSTD_NO_EXT_CXX_0X
43 const char* typeT,
const char* typeU,
47 "%s<%s>::type is %{?}exactly%{:}not%{;} %s",
48 trait, typeT, success, typeU);
51#define TEST(Trait,TypeT,TypeU) \
52 test_trait(__LINE__, #Trait, #TypeT, #TypeU, \
53 std::is_same<Trait<TypeT>::type, TypeU>::value)
57static void test_add_lvalue_reference ()
59 TEST (std::add_lvalue_reference,
int,
int&);
60 TEST (std::add_lvalue_reference,
int&,
int&);
62 TEST (std::add_lvalue_reference,
void,
void);
64 TEST (std::add_lvalue_reference,
int const [1],
int const (&) [1]);
65 TEST (std::add_lvalue_reference,
int const (&) [1],
int const (&) [1]);
67 TEST (std::add_lvalue_reference,
int const *
volatile,
68 int const *
volatile &);
69 TEST (std::add_lvalue_reference,
int const *
volatile &,
70 int const *
volatile &);
72 TEST (std::add_lvalue_reference,
int (),
int (&)());
73 TEST (std::add_lvalue_reference,
int (&)(),
int (&)());
79static void test_add_rvalue_reference ()
81#ifndef _RWSTD_NO_RVALUE_REFERENCE
85 "rvalue references are not supported");
89static void test_remove_reference ()
91 TEST(std::remove_reference,
int,
int);
92 TEST(std::remove_reference,
int&,
int);
94 TEST(std::remove_reference,
int const [],
int const []);
95 TEST(std::remove_reference,
int const (&) [1],
int const [1]);
97 TEST(std::remove_reference,
int const *
volatile,
98 int const *
volatile);
99 TEST(std::remove_reference,
int const *
volatile &,
100 int const *
volatile);
102 TEST (std::remove_reference,
int (),
int ());
103 TEST (std::remove_reference,
int (&)(),
int ());
113 test_add_lvalue_reference ();
114 test_add_rvalue_reference ();
115 test_remove_reference ();
129 "test disabled because _RWSTD_NO_EXT_CXX_0X is defined");
137int main (
int argc,
char *argv[])
139 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 *,...)