Qx v0.7
Qt Extensions Library
Loading...
Searching...
No Matches
qx-concepts.h
Go to the documentation of this file.
1#ifndef QX_CONCEPTS_H
2#define QX_CONCEPTS_H
3
4// Standard Library Includes
5#include <iterator>
6#include <type_traits>
7
8// Qt Includes
9#include <QHash>
10#include <QMap>
11
12// Inter-component Includes
14
15namespace _QxPrivate
16{
17 // Helpers
18 template <template <class...> class Template, class... Args>
19 void derived_from_specialization_impl(const Template<Args...>&);
20}
21
22namespace Qx
23{
24
25// Assignment Operators
26template<class K, typename T>
27concept defines_assign_for_s = requires(K klass, T type) {{ klass = type } -> std::same_as<K&>;};
28
29template<class K, typename T>
30concept defines_assign_for = requires(K klass, T type) {{ klass = type };};
31
32template<class K>
34
35template<class K>
37
38template<class K, typename T>
39concept defines_add_assign_for_s = requires(K klass, T type) {{ klass += type } -> std::same_as<K&>;};
40
41template<class K, typename T>
42concept defines_add_assign_for = requires(K klass, T type) {{ klass += type };};
43
44template<class K>
46
47template<class K>
49
50template<class K, typename T>
51concept defines_sub_assign_for_s = requires(K klass, T type) {{ klass -= type } -> std::same_as<K&>;};
52
53template<class K, typename T>
54concept defines_sub_assign_for = requires(K klass, T type) {{ klass -= type };};
55
56template<class K>
58
59template<class K>
61
62template<class K, typename T>
63concept defines_mult_assign_for_s = requires(K klass, T type) {{ klass *= type } -> std::same_as<K&>;};
64
65template<class K, typename T>
66concept defines_mult_assign_for = requires(K klass, T type) {{ klass *= type };};
67
68template<class K>
70
71template<class K>
73
74template<class K, typename T>
75concept defines_div_assign_for_s = requires(K klass, T type) {{ klass /= type } -> std::same_as<K&>;};
76
77template<class K, typename T>
78concept defines_div_assign_for = requires(K klass, T type) {{ klass /= type };};
79
80template<class K>
82
83template<class K>
85
86template<class K, typename T>
87concept defines_mod_assign_for_s = requires(K klass, T type) {{ klass %= type } -> std::same_as<K&>;};
88
89template<class K, typename T>
90concept defines_mod_assign_for = requires(K klass, T type) {{ klass %= type };};
91
92template<class K>
94
95template<class K>
97
98template<class K, typename T>
99concept defines_bit_and_assign_for_s = requires(K klass, T type) {{ klass &= type } -> std::same_as<K&>;};
100
101template<class K, typename T>
102concept defines_bit_and_assign_for = requires(K klass, T type) {{ klass &= type };};
103
104template<class K>
106
107template<class K>
109
110template<class K, typename T>
111concept defines_bit_or_assign_for_s = requires(K klass, T type) {{ klass |= type } -> std::same_as<K&>;};
112
113template<class K, typename T>
114concept defines_bit_or_assign_for = requires(K klass, T type) {{ klass |= type };};
115
116template<class K>
118
119template<class K>
121
122template<class K, typename T>
123concept defines_bit_xor_assign_for_s = requires(K klass, T type) {{ klass ^= type } -> std::same_as<K&>;};
124
125template<class K, typename T>
126concept defines_bit_xor_assign_for = requires(K klass, T type) {{ klass ^= type };};
127
128template<class K>
130
131template<class K>
133
134template<class K, typename T>
135concept defines_left_shift_assign_for_s = requires(K klass, T type) {{ klass <<= type } -> std::same_as<K&>;};
136
137template<class K, typename T>
138concept defines_left_shift_assign_for = requires(K klass, T type) {{ klass <<= type };};
139
140template<class K>
142
143template<class K>
145
146template<class K, typename T>
147concept defines_right_shift_assign_for_s = requires(K klass, T type) {{ klass >>= type } -> std::same_as<K&>;};
148
149template<class K, typename T>
150concept defines_right_shift_assign_for = requires(K klass, T type) {{ klass >>= type };};
151
152template<class K>
154
155template<class K>
157
158// Increment Decrement Operators
159template<class K>
160concept defines_pre_increment_s = requires(K klass) {{ ++klass } -> std::same_as<K&>;};
161
162template<class K>
163concept defines_pre_increment = requires(K klass) {{ ++klass };};
164
165template<class K>
166concept defines_pre_decrement_s = requires(K klass) {{ --klass } -> std::same_as<K&>;};
167
168template<class K>
169concept defines_pre_decrement = requires(K klass) {{ --klass };};
170
171template<class K>
172concept defines_post_increment_s = requires(K klass) {{ klass++} -> std::same_as<K>;};
173
174template<class K>
175concept defines_post_increment = requires(K klass) {{ klass++ };};
176
177template<class K>
178concept defines_post_decrement_s = requires(K klass) {{ klass-- } -> std::same_as<K>;};
179
180template<class K>
181concept defines_post_decrement = requires(K klass) {{ klass-- };};
182
183// Logical Operators
184template<class K>
185concept defines_negation_s = requires(K klass) {{ !klass } -> std::same_as<bool>;};
186
187template<class K>
188concept defines_negation = requires(K klass) {{ !klass };};
189
190template<class K, typename T>
191concept defines_and_for_s = requires(K klass, T type) {{ klass && type } -> std::same_as<bool>;};
192
193template<class K, typename T>
194concept defines_and_for = requires(K klass, T type) {{ klass && type };};
195
196template<class K>
198
199template<class K>
201
202template<class K, typename T>
203concept defines_or_for_s = requires(K klass, T type) {{ klass || type } -> std::same_as<bool>;};
204
205template<class K, typename T>
206concept defines_or_for = requires(K klass, T type) {{ klass || type };};
207
208template<class K>
210
211template<class K>
213
214// Member Access Operators
215template<class K, typename R, typename T>
216concept defines_subscript_for_s = requires(K klass, T type) {{ klass[type] } -> std::same_as<R&>;};
217
218template<class K, typename T>
219concept defines_subscript_for = requires(K klass, T type) {{ klass[type] };};
220
221template<class K, typename R>
222concept defines_indirection_s = requires(K klass) {{ *klass } -> std::same_as<R&>;};
223
224template<class K>
225concept defines_indirection = requires(K klass) {{ *klass };};
226
227template<class K, typename R>
228concept defines_address_of_s = requires(K klass) {{ &klass } -> std::same_as<R*>;};
229
230template<class K>
231concept defines_address_of = requires(K klass) {{ &klass };};
232
233template<class K>
234concept defines_member_ptr = requires(K klass) {{ klass.operator->() };};
235
236template<class K, typename R>
237concept defines_member_ptr_s = requires(K klass) {{ klass.operator->() } -> std::same_as<R*>;};
238
239template<class K, typename R, typename T>
240concept defines_ptr_to_member_ptr_for_s = requires(K klass, T type) {{ klass->*type } -> std::same_as<R&>;};
241
242template<class K, typename T>
243concept defines_ptr_to_member_ptr_for = requires(K klass, T type) {{ klass->*type };};
244
245// Other Operators
246template<class K, typename R, typename... Types>
247concept defines_call_for_s = requires(K klass, Types... args) {{ klass(args...) } -> std::same_as<R>;};
248
249template<class K, typename... Types>
250concept defines_call_for = requires(K klass, Types... args) {{ klass(args...) };};
251
252template<class K, typename R>
254
255template<class K>
257
258template<class K, typename T>
259concept defines_comma_for_s = requires(K klass, T type) {{ klass, type } -> std::same_as<T&>;};
260
261template<class K, typename T>
262concept defines_comma_for = requires(K klass, T type) {{ klass, type };};
263
264// Arithmetic Operators
265template<class K>
266concept defines_unary_plus_s = requires(K klass) {{ +klass } -> std::same_as<K>;};
267
268template<class K>
269concept defines_unary_plus = requires(K klass) {{ +klass };};
270
271template<class K>
272concept defines_unary_minus_s = requires(K klass) {{ -klass } -> std::same_as<K>;};
273
274template<class K>
275concept defines_unary_minus = requires(K klass) {{ -klass };};
276
277template<class K, typename T>
278concept defines_add_for_s = requires(K klass, T type) {{ klass + type } -> std::same_as<K>;};
279
280template<class K, typename T>
281concept defines_add_for = requires(K klass, T type) {{ klass + type};};
282
283template<class K>
285
286template<class K>
288
289template<class K, typename T>
290concept defines_sub_for_s = requires(K klass, T type) {{ klass - type } -> std::same_as<K>;};
291
292template<class K, typename T>
293concept defines_sub_for = requires(K klass, T type) {{ klass - type };};
294
295template<class K>
297
298template<class K>
300
301template<class K, typename T>
302concept defines_mult_for_s = requires(K klass, T type) {{ klass * type } -> std::same_as<K>;};
303
304template<class K, typename T>
305concept defines_mult_for = requires(K klass, T type) {{ klass * type };};
306
307template<class K>
309
310template<class K>
312
313template<class K, typename T>
314concept defines_div_for_s = requires(K klass, T type) {{ klass / type } -> std::same_as<K>;};
315
316template<class K, typename T>
317concept defines_div_for = requires(K klass, T type) {{ klass / type };};
318
319template<class K>
321
322template<class K>
324
325template<class K, typename T>
326concept defines_mod_for_s = requires(K klass, T type) {{ klass % type } -> std::same_as<K>;};
327
328template<class K, typename T>
329concept defines_mod_for = requires(K klass, T type) {{ klass % type };};
330
331template<class K>
333
334template<class K>
336
337template<class K>
338concept defines_bit_not_s = requires(K klass) {{ ~klass } -> std::same_as<K>;};
339
340template<class K>
341concept defines_bit_not = requires(K klass) {{ ~klass };};
342
343template<class K, typename T>
344concept defines_bit_and_for_s = requires(K klass, T type) {{ klass & type } -> std::same_as<K>;};
345
346template<class K, typename T>
347concept defines_bit_and_for = requires(K klass, T type) {{ klass & type };};
348
349template<class K>
351
352template<class K>
354
355template<class K, typename T>
356concept defines_bit_or_for_s = requires(K klass, T type) {{ klass | type } -> std::same_as<K>;};
357
358template<class K, typename T>
359concept defines_bit_or_for = requires(K klass, T type) {{ klass | type };};
360
361template<class K>
363
364template<class K>
366
367template<class K, typename T>
368concept defines_bit_xor_for_s = requires(K klass, T type) {{ klass ^ type } -> std::same_as<K>;};
369
370template<class K, typename T>
371concept defines_bit_xor_for = requires(K klass, T type) {{ klass ^ type };};
372
373template<class K>
375
376template<class K>
378
379template<class K, typename T>
380concept defines_left_shift_for_s = requires(K klass, T type) {{ klass << type } -> std::same_as<K>;};
381
382template<class K, typename T>
383concept defines_left_shift_for = requires(K klass, T type) {{ klass << type };};
384
385template<class K>
387
388template<class K>
390
391template<class K, typename T>
392concept defines_right_shift_for_s = requires(K klass, T type) {{ klass >> type } -> std::same_as<K>;};
393
394template<class K, typename T>
395concept defines_right_shift_for = requires(K klass, T type) {{ klass >> type };};
396
397template<class K>
399
400template<class K>
402
403// Comparison operators
404template<class K, typename T>
405concept defines_equality_for_s = requires(K klass, T type) {{ klass == type } -> std::same_as<bool>;};
406
407template<class K, typename T>
408concept defines_equality_for = requires(K klass, T type) {{ klass == type };};
409
410template<class K>
412
413template<class K>
415
416template<class K, typename T>
417concept defines_inequality_for_s = requires(K klass, T type) {{ klass != type } -> std::same_as<bool>;};
418
419template<class K, typename T>
420concept defines_inequality_for = requires(K klass, T type) {{ klass != type };};
421
422template<class K>
424
425template<class K>
427
428template<class K, typename T>
429concept defines_less_than_for_s = requires(K klass, T type) {{ klass < type } -> std::same_as<bool>;};
430
431template<class K, typename T>
432concept defines_less_than_for = requires(K klass, T type) {{ klass < type };};
433
434template<class K>
436
437template<class K>
439
440template<class K, typename T>
441concept defines_greater_than_for_s = requires(K klass, T type) {{ klass > type } -> std::same_as<bool>;};
442
443template<class K, typename T>
444concept defines_greater_than_for = requires(K klass, T type) {{ klass > type };};
445
446template<class K>
448
449template<class K>
451
452template<class K, typename T>
453concept defines_less_than_equal_for_s = requires(K klass, T type) {{ klass <= type } -> std::same_as<bool>;};
454
455template<class K, typename T>
456concept defines_less_than_equal_for = requires(K klass, T type) {{ klass <= type };};
457
458template<class K>
460
461template<class K>
463
464template<class K, typename T>
465concept defines_greater_than_equal_for_s = requires(K klass, T type) {{ klass >= type } -> std::same_as<bool>;};
466
467template<class K, typename T>
468concept defines_greater_than_equal_for = requires(K klass, T type) {{ klass >= type };};
469
470template<class K>
472
473template<class K>
475
476template<class K, typename T>
477concept defines_three_way_comp_for_s = requires(K klass, T type) {{ klass <=> type } -> std::convertible_to<std::partial_ordering>;};
478
479template<class K, typename T>
480concept defines_three_way_comp_for = requires(K klass, T type) {{ klass <=> type };};
481
482template<class K>
484
485template<class K>
487
488// Trait
489template<class K>
490concept arithmetic = std::is_arithmetic_v<K>;
491
492template<class K>
493concept fundamental = std::is_fundamental_v<K>;
494
495template<class K>
496concept traverseable = std::bidirectional_iterator<typename K::const_iterator> &&
497 std::is_default_constructible_v<K> &&
498 requires(K klass) {{ klass.size() } -> std::integral<>;};
499
500template<typename F, typename T>
502
503// Conversion
504template<class K, typename T>
505concept static_castable_to = requires(K klass) {{ static_cast<T>(klass) };};
506
507// Grouping
508template<class K, class ... L>
509concept any_of = (std::same_as<K, L> || ...);
510
511// Template
512template<typename K, template <typename...> class L>
514
515 template <class K, template <class...> class L>
516concept derived_from_specialization_of = requires(const K& k) { _QxPrivate::derived_from_specialization_impl<L>(k); };
517
518// Similar interface types
519template<typename T>
522
523template<typename T>
526
527}
528
529#endif // QX_CONCEPTS_H
Specifies that a type is one of several types.
Definition qx-concepts.h:509
Specifies that a type is an arithmetic type.
Definition qx-concepts.h:490
Specifies that a type can act as a comparator.
Definition qx-concepts.h:501
Specifies that a type defines an addition assignment operator for another type (with strict return).
Definition qx-concepts.h:39
Specifies that a type defines an addition assignment operator for another type.
Definition qx-concepts.h:42
Specifies that a type defines an addition assignment operator for itself (with strict return).
Definition qx-concepts.h:45
Specifies that a type defines an addition assignment operator for itself.
Definition qx-concepts.h:48
Specifies that a type defines an addition operator for another type (with strict return).
Definition qx-concepts.h:278
Specifies that a type defines an addition operator for another type.
Definition qx-concepts.h:281
Specifies that a type defines an addition operator for itself (with strict return).
Definition qx-concepts.h:284
Specifies that a type defines an addition operator for itself.
Definition qx-concepts.h:287
Specifies that a type defines an address-of operator (with strict return).
Definition qx-concepts.h:228
Specifies that a type defines an address-of operator.
Definition qx-concepts.h:231
Specifies that a type defines a logical AND operator for another type (with strict return).
Definition qx-concepts.h:191
Specifies that a type defines a logical AND operator for another type.
Definition qx-concepts.h:194
Specifies that a type defines a logical AND operator for itself (with strict return)....
Definition qx-concepts.h:197
Specifies that a type defines a logical AND operator for itself.
Definition qx-concepts.h:200
Specifies that a type defines a simple assignment operator for another type (with strict return).
Definition qx-concepts.h:27
Specifies that a type defines a simple assignment operator for another type.
Definition qx-concepts.h:30
Specifies that a type defines a simple assignment operator for itself (with strict return).
Definition qx-concepts.h:33
Specifies that a type defines a simple assignment operator for itself.
Definition qx-concepts.h:36
Specifies that a type defines a bitwise AND assignment operator for another type (with strict return)...
Definition qx-concepts.h:99
Specifies that a type defines a bitwise AND assignment operator for another type.
Definition qx-concepts.h:102
Specifies that a type defines a bitwise AND assignment operator for itself (with strict return).
Definition qx-concepts.h:105
Specifies that a type defines a bitwise AND assignment operator for itself.
Definition qx-concepts.h:108
Specifies that a type defines a bitwise AND operator for another type (with strict return).
Definition qx-concepts.h:344
Specifies that a type defines a bitwise AND operator for another type.
Definition qx-concepts.h:347
Specifies that a type defines a bitwise AND operator for itself (with strict return).
Definition qx-concepts.h:350
Specifies that a type defines a bitwise AND operator for itself.
Definition qx-concepts.h:353
Specifies that a type defines a bitwise NOT operator (with strict return).
Definition qx-concepts.h:338
Specifies that a type defines a bitwise NOT operator.
Definition qx-concepts.h:341
Specifies that a type defines a bitwise OR assignment operator for another type (with strict return).
Definition qx-concepts.h:111
Specifies that a type defines a bitwise OR assignment operator for another type.
Definition qx-concepts.h:114
Specifies that a type defines a bitwise OR assignment operator for itself (with strict return).
Definition qx-concepts.h:117
Specifies that a type defines a bitwise OR assignment operator for itself.
Definition qx-concepts.h:120
Specifies that a type defines a bitwise OR operator for another type (with strict return).
Definition qx-concepts.h:356
Specifies that a type defines a bitwise OR operator for another type.
Definition qx-concepts.h:359
Specifies that a type defines a bitwise OR operator for itself (with strict return).
Definition qx-concepts.h:362
Specifies that a type defines a bitwise OR operator for itself.
Definition qx-concepts.h:365
Specifies that a type defines a bitwise XOR assignment operator for another type (with strict return)...
Definition qx-concepts.h:123
Specifies that a type defines a bitwise XOR assignment operator for another type.
Definition qx-concepts.h:126
Specifies that a type defines a bitwise XOR assignment operator for itself (with strict return).
Definition qx-concepts.h:129
Specifies that a type defines a bitwise XOR assignment operator for itself.
Definition qx-concepts.h:132
Specifies that a type defines a bitwise XOR operator for another type (with strict return).
Definition qx-concepts.h:368
Specifies that a type defines a bitwise XOR operator for another type.
Definition qx-concepts.h:371
Specifies that a type defines a bitwise XOR operator for itself (with strict return).
Definition qx-concepts.h:374
Specifies that a type defines a bitwise XOR operator for itself.
Definition qx-concepts.h:377
Specifies that a type defines a call operator for the specified argument types (with strict return).
Definition qx-concepts.h:247
Specifies that a type defines a call operator for the specified argument types.
Definition qx-concepts.h:250
Specifies that a type defines a argumentless call operator (with strict return).
Definition qx-concepts.h:253
Specifies that a type defines a argumentless call operator.
Definition qx-concepts.h:256
Specifies that a type defines a comma operator for another type (with strict return).
Definition qx-concepts.h:259
Specifies that a type defines a comma operator for another type.
Definition qx-concepts.h:262
Specifies that a type defines a division assignment operator for another type (with strict return).
Definition qx-concepts.h:75
Specifies that a type defines a division assignment operator for another type.
Definition qx-concepts.h:78
Specifies that a type defines a division assignment operator for itself (with strict return).
Definition qx-concepts.h:81
Specifies that a type defines a division assignment operator for itself.
Definition qx-concepts.h:84
Specifies that a type defines a division operator for another type (with strict return).
Definition qx-concepts.h:314
Specifies that a type defines a division operator for another type.
Definition qx-concepts.h:317
Specifies that a type defines a division operator for itself (with strict return).
Definition qx-concepts.h:320
Specifies that a type defines a division operator for itself.
Definition qx-concepts.h:323
Specifies that a type defines an equal to operator for another type (with strict return).
Definition qx-concepts.h:405
Specifies that a type defines an equal to operator for another type.
Definition qx-concepts.h:408
Specifies that a type defines an equal to operator for itself (with strict return).
Definition qx-concepts.h:411
Specifies that a type defines an equal to operator for itself (with strict return).
Definition qx-concepts.h:414
Specifies that a type defines a greater than or equal to operator for another type (with strict retur...
Definition qx-concepts.h:465
Specifies that a type defines a greater than or equal to operator for another type.
Definition qx-concepts.h:468
Specifies that a type defines a greater than or equal to operator for itself (with strict return).
Definition qx-concepts.h:471
Specifies that a type defines a greater than or equal to operator for itself.
Definition qx-concepts.h:474
Specifies that a type defines a greater than operator for another type (with strict return).
Definition qx-concepts.h:441
Specifies that a type defines a greater than operator for another type.
Definition qx-concepts.h:444
Specifies that a type defines a greater than operator for itself (with strict return).
Definition qx-concepts.h:447
Specifies that a type defines a greater than operator for itself.
Definition qx-concepts.h:450
Specifies that a type defines an indirection operator (with strict return).
Definition qx-concepts.h:222
Specifies that a type defines an indirection operator.
Definition qx-concepts.h:225
Specifies that a type defines a not equal to operator for another type (with strict return).
Definition qx-concepts.h:417
Specifies that a type defines a not equal to operator for another type.
Definition qx-concepts.h:420
Specifies that a type defines a not equal to operator for itself (with strict return).
Definition qx-concepts.h:423
Specifies that a type defines a not equal to operator for itself (with strict return).
Definition qx-concepts.h:426
Specifies that a type defines a left shift assignment operator for another type (with strict return).
Definition qx-concepts.h:135
Specifies that a type defines a left shift assignment operator for another type.
Definition qx-concepts.h:138
Specifies that a type defines a left shift assignment operator for itself (with strict return).
Definition qx-concepts.h:141
Specifies that a type defines a left shift assignment operator for itself.
Definition qx-concepts.h:144
Specifies that a type defines a left shift operator for another type (with strict return).
Definition qx-concepts.h:380
Specifies that a type defines a left shift operator for another type.
Definition qx-concepts.h:383
Specifies that a type defines a left shift operator for itself (with strict return).
Definition qx-concepts.h:386
Specifies that a type defines a left shift operator for itself.
Definition qx-concepts.h:389
Specifies that a type defines a less than or equal to operator for another type (with strict return).
Definition qx-concepts.h:453
Specifies that a type defines a less than or equal to operator for another type.
Definition qx-concepts.h:456
Specifies that a type defines a less than or equal to operator for itself (with strict return).
Definition qx-concepts.h:459
Specifies that a type defines a less than or equal to operator for itself.
Definition qx-concepts.h:462
Specifies that a type defines a less than operator for another type (with strict return).
Definition qx-concepts.h:429
Specifies that a type defines a less than operator for another type.
Definition qx-concepts.h:432
Specifies that a type defines a less than operator for itself (with strict return).
Definition qx-concepts.h:435
Specifies that a type defines a less than operator for itself.
Definition qx-concepts.h:438
Specifies that a type defines a modulo assignment operator for another type (with strict return).
Definition qx-concepts.h:87
Specifies that a type defines a modulo assignment operator for another type.
Definition qx-concepts.h:90
Specifies that a type defines a modulo assignment operator for itself (with strict return).
Definition qx-concepts.h:93
Specifies that a type defines a modulo assignment operator for itself.
Definition qx-concepts.h:96
Specifies that a type defines a modulo operator for another type (with strict return).
Definition qx-concepts.h:326
Specifies that a type defines a modulo operator for another type.
Definition qx-concepts.h:329
Specifies that a type defines a modulo operator for itself (with strict return).
Definition qx-concepts.h:332
Specifies that a type defines a modulo operator for itself.
Definition qx-concepts.h:335
Specifies that a type defines a multiplication assignment operator for another type (with strict retu...
Definition qx-concepts.h:63
Specifies that a type defines a multiplication assignment operator for another type.
Definition qx-concepts.h:66
Specifies that a type defines a multiplication assignment operator for itself (with strict return).
Definition qx-concepts.h:69
Specifies that a type defines a multiplication assignment operator for itself.
Definition qx-concepts.h:72
Specifies that a type defines a multiplication operator for another type (with strict return).
Definition qx-concepts.h:302
Specifies that a type defines a multiplication operator for another type.
Definition qx-concepts.h:305
Specifies that a type defines a multiplication operator for itself (with strict return).
Definition qx-concepts.h:308
Specifies that a type defines a multiplication operator for itself.
Definition qx-concepts.h:311
Specifies that a type defines a negation operator (with strict return).
Definition qx-concepts.h:185
Specifies that a type defines a negation operator.
Definition qx-concepts.h:188
Specifies that a type defines a logical OR operator for another type (with strict return).
Definition qx-concepts.h:203
Specifies that a type defines a logical OR operator for another type.
Definition qx-concepts.h:206
Specifies that a type defines a logical OR operator for itself (with strict return).
Definition qx-concepts.h:209
Specifies that a type defines a logical OR operator for itself.
Definition qx-concepts.h:212
Specifies that a type defines a post-decrement operator (with strict return).
Definition qx-concepts.h:178
Specifies that a type defines a post-decrement operator.
Definition qx-concepts.h:181
Specifies that a type defines a post-increment operator (with strict return).
Definition qx-concepts.h:172
Specifies that a type defines a post-increment operator.
Definition qx-concepts.h:175
Specifies that a type defines a pre-decrement operator (with strict return).
Definition qx-concepts.h:166
Specifies that a type defines a pre-decrement operator.
Definition qx-concepts.h:169
Specifies that a type defines a pre-increment operator (with strict return).
Definition qx-concepts.h:160
Specifies that a type defines a pre-increment operator.
Definition qx-concepts.h:163
Specifies that a type defines a pointer to member of pointer operator (with strict return).
Definition qx-concepts.h:240
Specifies that a type defines a pointer to member of pointer operator.
Definition qx-concepts.h:243
Specifies that a type defines a right shift assignment operator for another type (with strict return)...
Definition qx-concepts.h:147
Specifies that a type defines a right shift assignment operator for another type.
Definition qx-concepts.h:150
Specifies that a type defines a right shift assignment operator for itself (with strict return).
Definition qx-concepts.h:153
Specifies that a type defines a right shift assignment operator for itself.
Definition qx-concepts.h:156
Specifies that a type defines a right shift operator for another type (with strict return).
Definition qx-concepts.h:392
Specifies that a type defines a right shift operator for another type.
Definition qx-concepts.h:395
Specifies that a type defines a right shift operator for itself (with strict return).
Definition qx-concepts.h:398
Specifies that a type defines a right shift operator for itself.
Definition qx-concepts.h:401
Specifies that a type defines a subtraction assignment operator for another type (with strict return)...
Definition qx-concepts.h:51
Specifies that a type defines a subtraction assignment operator for another type.
Definition qx-concepts.h:54
Specifies that a type defines a subtraction assignment operator for itself (with strict return).
Definition qx-concepts.h:57
Specifies that a type defines a subtraction assignment operator for itself.
Definition qx-concepts.h:60
Specifies that a type defines a subtraction operator for another type (with strict return).
Definition qx-concepts.h:290
Specifies that a type defines a subtraction operator for another type.
Definition qx-concepts.h:293
Specifies that a type defines a subtraction operator for itself (with strict return).
Definition qx-concepts.h:296
Specifies that a type defines a subtraction operator for itself.
Definition qx-concepts.h:299
Specifies that a type defines a subscript operator for another type (with strict return).
Definition qx-concepts.h:216
Specifies that a type defines a subscript operator for another type.
Definition qx-concepts.h:219
Specifies that a type defines a three-way comparison operator for another type (with strict return).
Definition qx-concepts.h:477
Specifies that a type defines a three-way comparison operator for another type.
Definition qx-concepts.h:480
Specifies that a type defines a three-way comparison operator for itself (with strict return).
Definition qx-concepts.h:483
Specifies that a type defines a three-way comparison operator for itself.
Definition qx-concepts.h:486
Specifies that a type defines a unary minus operator (with strict return).
Definition qx-concepts.h:272
Specifies that a type defines a unary minus operator.
Definition qx-concepts.h:275
Specifies that a type defines a unary plus operator (with strict return).
Definition qx-concepts.h:266
Specifies that a type defines a unary plus operator.
Definition qx-concepts.h:269
Specifies that a type is a derivation of any specialization of a template.
Definition qx-concepts.h:516
Specifies that a type is a fundamental type.
Definition qx-concepts.h:493
Specifies that a type is a Qt-based associative container type.
Definition qx-concepts.h:520
Specifies that a type is a Qt-based collection type.
Definition qx-concepts.h:524
Specifies that a type is a specialization of a template.
Definition qx-concepts.h:513
Specifies that a type can be statically cast to another type.
Definition qx-concepts.h:505
Specifies that a type is a valid type for Qx::Traverser.
Definition qx-concepts.h:496
The Qx namespace is the main namespace through which all non-global functionality of the Qx library i...
Definition qx-abstracterror.cpp:13
constexpr bool is_specialization_of_v
See is_specialization_of.
Definition qx-typetraits.h:18
The qx-typetraits header file provides a library of general purpose type-traits as an extension of th...