Evaluates to the hash value of the type identifiers of the fields of T, starting with the n-th field, using hash as initial hash value. T must be a struct or union.
Evaluates to the concatenated type identifiers of the fields of T, starting with the n-th field. T must be a struct or union.
Aliases the base type of T, if T is a typedef or enum, or T otherwise. Recurses into further typedefs/enums if required.
Aliases the base type of T, if T is a typedef or enum, or T otherwise. Recurses into further typedefs/enums if required. Veryfies that the aliased type is not a class, pointer, function, delegate or associative array (a reference type other than a dynamic array).
Evaluates to the hash value of the concatenated type identifiers of the elements of T, using hash as initial hash value.
Evaluates to the concatenated type identifiers of the elements of T.
Evaluates to an error messsage used by CheckedBaseType.
Evaluates to the type hash of T, which is the 64-bit Fnv1a hash of the string that would be generated by TypeId!(T).
Evaluates to the type hash of T, which is the 64-bit Fnv1a hash of the string that would be generated by TypeId!(T), using hash as initial hash value so that TypeHash!(TypeHash!(A), B) evaluates to the 64-bit Fvn1a hash value of TypeId!(A) ~ TypeId!(B).
Evaluates to the type identifier of T, fully recursing into structs, unions and function/delegate parameter lists. T may be or contain any type except a class or interface.
Templates to generate a a hash or a string that describes the binary layout of a value type, fully recursing into aggregates.
The data layout identifier hash is the 64-bit Fnv1a hash value of a string that is generated from a struct or union by concatenating the offsets and types of each field in order of appearance, recursing into structs, unions and function/delegate parameter lists and using the base type of enums and typedefs.
The type identifier of a non-aggregate type is the .stringof of that type (or its base if it is a typedef or enum).