32#if !defined (_RWSTD_NO_EXT_CXX_0X) \
33 && !defined (_RWSTD_NO_RVALUE_REFERENCES)
44 rw_info (0, __FILE__, __LINE__,
"tuple_size");
48 rw_assert (std::tuple_size<T>::value == S, __FILE__, __LINE__, \
49 "tuple_size<" #T ">::value, got %d, expected " \
50 STRING (S), std::tuple_size<T>::value)
52 TEST (std::tuple<>, 0);
54 TEST (std::tuple<int>, 1);
55 TEST (std::tuple<const int>, 1);
56 TEST (std::tuple<UserDefined>, 1);
57 TEST (std::tuple<std::tuple<int> >, 1);
60#define TUPLE std::tuple<long, const char*>
65#define TUPLE std::tuple<bool, char, int, double, void*, UserDefined>
93 :
rw_any_t (char ()), type_id (const_int) { }
96 :
rw_any_t (char ()), type_id (user_defined) { }
99 :
rw_any_t (char ()), type_id (int_tuple) { }
103 return type_id == const_int?
"const int":
104 type_id == user_defined?
"UserDefined":
105 type_id == int_tuple?
"std::tuple<int>":
113 rw_info (0, __FILE__, __LINE__,
"tuple_element");
116#define IS_SAME(T,U) \
117 _RW::__rw_is_same<T, U>::value
120#define TYPE_NAME(T) \
121 (any_t (T ())).type_name ()
124#define TEST(N, T, E) \
126 typedef std::tuple_element<N, T>::type elem_type; \
127 rw_assert (IS_SAME(elem_type, E), __FILE__, __LINE__, \
128 "tuple_element<0, " #T ">::type, got type \"%s\", " \
129 "expected type \"" #E "\"", TYPE_NAME (elem_type)); \
132 TEST (0, std::tuple<int>,
int)
133 TEST (0, std::tuple<const int>,
const int)
134 TEST (0, std::tuple<std::tuple<int> >, std::tuple<int>)
138#define TUPLE std::tuple<long, const char*>
144#define TUPLE std::tuple<bool, char, int, double, void*, UserDefined>
160 test_tuple_element ();
171#if defined (_RWSTD_NO_EXT_CXX_0X)
174 "test disabled because _RWSTD_NO_EXT_CXX_0X is defined");
176#elif defined (_RWSTD_NO_RVALUE_REFERENCES)
179 "test disabled because _RWSTD_NO_RVALUE_REFERENCES is "
192 return rw_test (argc, argv, __FILE__,
194 "20.3.1.4 Tuple helper classes",
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
const char * type_name() const
const char * type_name() const
_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_info(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_warn(int, const char *, int, const char *,...)