48
48
int() is not an object
49
49
int(*)() is object
50
50
int(&)() is not an object
51
+ basically !(is_reference || is_void || is_function)
51
52
52
53
template<class T> struct is_scalar; (DONE)
53
54
template<class T> struct is_compound; (DONE)
58
59
template<class T> struct is_volatile; (DONE)
59
60
template<class T> struct is_trivial; (EVERYTHING IS)
60
61
template<class T> struct is_trivially_copyable; (EVERYTHING IS)
61
- template<class T> struct is_standard_layout; (NOT- APPLICABLE)
62
+ template<class T> struct is_standard_layout; (APPLICABLE BUT IMPOSSIBLE TO TEST WITHOUT REFLECTION )
62
63
template<class T> struct is_empty; (DONE? sizeof(T) == 0)
63
64
template<class T> struct is_polymorphic; (NOTHING IS)
64
65
template<class T> struct is_abstract; (NOTHING IS)
99
100
template<class T> struct add_cv; (DONE)
100
101
101
102
// reference modifications
102
- template<class T> struct remove_reference; (DONE)
103
+ template<class T> struct remove_reference; (DONE BUT DONT USE )
103
104
template<class T> struct add_lvalue_reference; (DONE BUT DONT USE)
104
- template<class T> struct add_rvalue_reference; (DONE BUT DONT USE )
105
+ template<class T> struct add_rvalue_reference; (TODO )
105
106
106
107
// sign modifications
107
- template<class T> struct make_signed; (TODO )
108
- template<class T> struct make_unsigned; (TODO )
108
+ template<class T> struct make_signed; (DONE )
109
+ template<class T> struct make_unsigned; (DONE )
109
110
110
111
// array modifications
111
112
template<class T> struct remove_extent; (DONE)
129
130
template<class Fn, class... ArgTypes> struct invoke_result;
130
131
template<class T> struct unwrap_reference; (TODO)
131
132
template<class T> struct unwrap_ref_decay; (TODO)
133
+ template<class...> using void_t = void; (VARIADICS NOT SUPPORTED USE `make_void` INSTEAD)
132
134
133
135
NO FOLD EXPRESSIONS IN HLSL!
134
136
// logical operator traits
@@ -383,6 +385,8 @@ struct typeid_t;
383
385
template<class T>
384
386
struct alignment_of;
385
387
388
+ template<class >
389
+ struct make_void { using type = void ; };
386
390
387
391
// reference stuff needed for semantics
388
392
@@ -393,9 +397,6 @@ struct alignment_of;
393
397
namespace impl
394
398
{
395
399
396
- template<class >
397
- struct make_void { using type = void ; };
398
-
399
400
template<typename,class =void >
400
401
struct is_reference : bool_constant<true > { };
401
402
0 commit comments