|
18 | 18 |
|
19 | 19 | #include <list>
|
20 | 20 | #include <map>
|
| 21 | +#include <type_traits> |
21 | 22 | #include <unordered_set>
|
22 | 23 |
|
23 | 24 | #include <folly/portability/GTest.h>
|
@@ -77,96 +78,104 @@ cpp_type<set<Specialized>, std::unordered_set<int>> testOverload(
|
77 | 78 | map<Specialized, Specialized> testOverload(map<Specialized, Specialized>);
|
78 | 79 |
|
79 | 80 | namespace {
|
80 |
| -using test::same_tag; |
81 | 81 | using test::TestAdapter;
|
82 | 82 |
|
83 | 83 | // Test that type tags can be used to find an overload in ~constant time
|
84 | 84 | // by the compiler.
|
85 |
| -static_assert(same_tag<all_c, decltype(testOverload(primitive_c{}))>); |
86 |
| -static_assert(same_tag<void_t, decltype(testOverload(void_t{}))>); |
87 |
| -static_assert(same_tag<integral_c, decltype(testOverload(bool_t{}))>); |
88 |
| -static_assert(same_tag<byte_t, decltype(testOverload(byte_t{}))>); |
89 |
| -static_assert(same_tag<integral_c, decltype(testOverload(i16_t{}))>); |
90 |
| -static_assert(same_tag<i32_t, decltype(testOverload(i32_t{}))>); |
91 |
| -static_assert(same_tag<i64_t, decltype(testOverload(i64_t{}))>); |
92 |
| -static_assert(same_tag<floating_point_c, decltype(testOverload(float_t{}))>); |
93 |
| -static_assert(same_tag<double_t, decltype(testOverload(double_t{}))>); |
94 |
| -static_assert(same_tag<string_t, decltype(testOverload(string_t{}))>); |
95 |
| -static_assert(same_tag<string_c, decltype(testOverload(binary_t{}))>); |
96 |
| - |
97 |
| -static_assert(same_tag<enum_c, decltype(testOverload(enum_c{}))>); |
98 |
| -static_assert(same_tag<enum_c, decltype(testOverload(enum_t<General>{}))>); |
99 |
| -static_assert(same_tag< |
| 85 | +static_assert(std::is_same_v<all_c, decltype(testOverload(primitive_c{}))>); |
| 86 | +static_assert(std::is_same_v<void_t, decltype(testOverload(void_t{}))>); |
| 87 | +static_assert(std::is_same_v<integral_c, decltype(testOverload(bool_t{}))>); |
| 88 | +static_assert(std::is_same_v<byte_t, decltype(testOverload(byte_t{}))>); |
| 89 | +static_assert(std::is_same_v<integral_c, decltype(testOverload(i16_t{}))>); |
| 90 | +static_assert(std::is_same_v<i32_t, decltype(testOverload(i32_t{}))>); |
| 91 | +static_assert(std::is_same_v<i64_t, decltype(testOverload(i64_t{}))>); |
| 92 | +static_assert( |
| 93 | + std::is_same_v<floating_point_c, decltype(testOverload(float_t{}))>); |
| 94 | +static_assert(std::is_same_v<double_t, decltype(testOverload(double_t{}))>); |
| 95 | +static_assert(std::is_same_v<string_t, decltype(testOverload(string_t{}))>); |
| 96 | +static_assert(std::is_same_v<string_c, decltype(testOverload(binary_t{}))>); |
| 97 | + |
| 98 | +static_assert(std::is_same_v<enum_c, decltype(testOverload(enum_c{}))>); |
| 99 | +static_assert( |
| 100 | + std::is_same_v<enum_c, decltype(testOverload(enum_t<General>{}))>); |
| 101 | +static_assert(std::is_same_v< |
100 | 102 | enum_t<Specialized>,
|
101 | 103 | decltype(testOverload(enum_t<Specialized>{}))>);
|
102 | 104 |
|
103 |
| -static_assert(same_tag<struct_c, decltype(testOverload(struct_c{}))>); |
104 |
| -static_assert(same_tag<struct_c, decltype(testOverload(struct_t<General>{}))>); |
105 |
| -static_assert(same_tag< |
| 105 | +static_assert(std::is_same_v<struct_c, decltype(testOverload(struct_c{}))>); |
| 106 | +static_assert( |
| 107 | + std::is_same_v<struct_c, decltype(testOverload(struct_t<General>{}))>); |
| 108 | +static_assert(std::is_same_v< |
106 | 109 | struct_t<Specialized>,
|
107 | 110 | decltype(testOverload(struct_t<Specialized>{}))>);
|
108 | 111 |
|
109 |
| -static_assert(same_tag<structured_c, decltype(testOverload(union_c{}))>); |
| 112 | +static_assert(std::is_same_v<structured_c, decltype(testOverload(union_c{}))>); |
110 | 113 | static_assert(
|
111 |
| - same_tag<structured_c, decltype(testOverload(union_t<General>{}))>); |
112 |
| -static_assert(same_tag< |
| 114 | + std::is_same_v<structured_c, decltype(testOverload(union_t<General>{}))>); |
| 115 | +static_assert(std::is_same_v< |
113 | 116 | union_t<Specialized>,
|
114 | 117 | decltype(testOverload(union_t<Specialized>{}))>);
|
115 | 118 |
|
116 |
| -static_assert(same_tag<struct_except_c, decltype(testOverload(exception_c{}))>); |
117 | 119 | static_assert(
|
118 |
| - same_tag<struct_except_c, decltype(testOverload(exception_t<General>{}))>); |
119 |
| -static_assert(same_tag< |
| 120 | + std::is_same_v<struct_except_c, decltype(testOverload(exception_c{}))>); |
| 121 | +static_assert(std::is_same_v< |
| 122 | + struct_except_c, |
| 123 | + decltype(testOverload(exception_t<General>{}))>); |
| 124 | +static_assert(std::is_same_v< |
120 | 125 | exception_t<Specialized>,
|
121 | 126 | decltype(testOverload(exception_t<Specialized>{}))>);
|
122 | 127 |
|
123 |
| -static_assert(same_tag<list_c, decltype(testOverload(list_c{}))>); |
124 |
| -static_assert(same_tag<list_c, decltype(testOverload(list<void_t>{}))>); |
125 |
| -static_assert(same_tag< |
| 128 | +static_assert(std::is_same_v<list_c, decltype(testOverload(list_c{}))>); |
| 129 | +static_assert(std::is_same_v<list_c, decltype(testOverload(list<void_t>{}))>); |
| 130 | +static_assert(std::is_same_v< |
126 | 131 | cpp_type<list<Specialized>, std::list<Specialized>>,
|
127 | 132 | decltype(testOverload(
|
128 | 133 | cpp_type<list<Specialized>, std::list<Specialized>>{}))>);
|
129 |
| -static_assert(same_tag< |
| 134 | +static_assert(std::is_same_v< |
130 | 135 | cpp_type<list<Specialized>, std::list<Specialized>>,
|
131 | 136 | decltype(testOverload(
|
132 | 137 | cpp_type<list<Specialized>, std::list<Specialized>>{}))>);
|
133 | 138 |
|
134 |
| -static_assert(same_tag<container_c, decltype(testOverload(set_c{}))>); |
135 |
| -static_assert(same_tag<container_c, decltype(testOverload(set<void_t>{}))>); |
| 139 | +static_assert(std::is_same_v<container_c, decltype(testOverload(set_c{}))>); |
136 | 140 | static_assert(
|
137 |
| - same_tag<container_c, decltype(testOverload(set<Specialized>{}))>); |
138 |
| -static_assert(same_tag< |
| 141 | + std::is_same_v<container_c, decltype(testOverload(set<void_t>{}))>); |
| 142 | +static_assert( |
| 143 | + std::is_same_v<container_c, decltype(testOverload(set<Specialized>{}))>); |
| 144 | +static_assert(std::is_same_v< |
139 | 145 | cpp_type<set<Specialized>, std::unordered_set<int>>,
|
140 | 146 | decltype(testOverload(
|
141 | 147 | cpp_type<set<Specialized>, std::unordered_set<int>>{}))>);
|
142 | 148 |
|
143 |
| -static_assert(same_tag<map_c, decltype(testOverload(map_c{}))>); |
144 |
| -static_assert(same_tag<map_c, decltype(testOverload(map<void_t, void_t>{}))>); |
| 149 | +static_assert(std::is_same_v<map_c, decltype(testOverload(map_c{}))>); |
| 150 | +static_assert( |
| 151 | + std::is_same_v<map_c, decltype(testOverload(map<void_t, void_t>{}))>); |
145 | 152 | static_assert(
|
146 |
| - same_tag<map_c, decltype(testOverload(map<Specialized, void_t>{}))>); |
| 153 | + std::is_same_v<map_c, decltype(testOverload(map<Specialized, void_t>{}))>); |
147 | 154 | static_assert(
|
148 |
| - same_tag<map_c, decltype(testOverload(map<void_t, Specialized>{}))>); |
149 |
| -static_assert(same_tag< |
| 155 | + std::is_same_v<map_c, decltype(testOverload(map<void_t, Specialized>{}))>); |
| 156 | +static_assert(std::is_same_v< |
150 | 157 | map<Specialized, Specialized>,
|
151 | 158 | decltype(testOverload(map<Specialized, Specialized>{}))>);
|
152 | 159 |
|
153 | 160 | // Adapted types are convertable to the underlying tag.
|
154 |
| -static_assert( |
155 |
| - same_tag<void_t, decltype(testOverload(adapted<TestAdapter, void_t>{}))>); |
156 |
| -static_assert(same_tag< |
| 161 | +static_assert(std::is_same_v< |
| 162 | + void_t, |
| 163 | + decltype(testOverload(adapted<TestAdapter, void_t>{}))>); |
| 164 | +static_assert(std::is_same_v< |
157 | 165 | list_c,
|
158 | 166 | decltype(testOverload(adapted<TestAdapter, list<enum_c>>{}))>);
|
159 | 167 | // CppType types are convertable to the underlying tag.
|
160 |
| -static_assert( |
161 |
| - same_tag<void_t, decltype(testOverload(cpp_type<TestAdapter, void_t>{}))>); |
162 |
| -static_assert(same_tag< |
| 168 | +static_assert(std::is_same_v< |
| 169 | + void_t, |
| 170 | + decltype(testOverload(cpp_type<TestAdapter, void_t>{}))>); |
| 171 | +static_assert(std::is_same_v< |
163 | 172 | list_c,
|
164 | 173 | decltype(testOverload(cpp_type<TestAdapter, list<enum_c>>{}))>);
|
165 | 174 |
|
166 |
| -static_assert(same_tag<service_c, decltype(testOverload(service_c{}))>); |
| 175 | +static_assert(std::is_same_v<service_c, decltype(testOverload(service_c{}))>); |
167 | 176 | static_assert(
|
168 |
| - same_tag<service_c, decltype(testOverload(service_t<General>{}))>); |
169 |
| -static_assert(same_tag< |
| 177 | + std::is_same_v<service_c, decltype(testOverload(service_t<General>{}))>); |
| 178 | +static_assert(std::is_same_v< |
170 | 179 | service_t<Specialized>,
|
171 | 180 | decltype(testOverload(service_t<Specialized>{}))>);
|
172 | 181 |
|
|
0 commit comments